From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qt0-f199.google.com (mail-qt0-f199.google.com [209.85.216.199]) by kanga.kvack.org (Postfix) with ESMTP id A737F6B0005 for ; Wed, 14 Mar 2018 17:50:22 -0400 (EDT) Received: by mail-qt0-f199.google.com with SMTP id l32so3115866qtd.2 for ; Wed, 14 Mar 2018 14:50:22 -0700 (PDT) Received: from aserp2130.oracle.com (aserp2130.oracle.com. [141.146.126.79]) by mx.google.com with ESMTPS id r7si2898260qkf.355.2018.03.14.14.50.21 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 14 Mar 2018 14:50:21 -0700 (PDT) Subject: Re: [mmotm:master 8/285] fs//hugetlbfs/inode.c:142:22: note: in expansion of macro 'PGOFF_LOFFT_MAX' References: <201803141423.WZYJTFEz%fengguang.wu@intel.com> <0d54df0b-1e53-58a0-81ff-e496ae2f7cd8@oracle.com> <20180314144607.34f429990ccce6c4a244cbde@linux-foundation.org> From: Mike Kravetz Message-ID: <432fb2a3-b729-9c3a-7d60-890b8f9b10dd@oracle.com> Date: Wed, 14 Mar 2018 14:50:13 -0700 MIME-Version: 1.0 In-Reply-To: <20180314144607.34f429990ccce6c4a244cbde@linux-foundation.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: owner-linux-mm@kvack.org List-ID: To: Andrew Morton Cc: kbuild test robot , kbuild-all@01.org, Johannes Weiner , Linux Memory Management List On 03/14/2018 02:46 PM, Andrew Morton wrote: > On Wed, 14 Mar 2018 11:52:51 -0700 Mike Kravetz wrote: > >> On 03/13/2018 11:15 PM, kbuild test robot wrote: >>> tree: git://git.cmpxchg.org/linux-mmotm.git master >>> head: ead058c4ec49752a4e0323368f1d695385c66020 >>> commit: af7abfba1161d2814301844fe11adac16910ea80 [8/285] hugetlbfs-check-for-pgoff-value-overflow-v3 >>> config: sh-defconfig (attached as .config) >>> compiler: sh4-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0 >>> reproduce: >>> wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross >>> chmod +x ~/bin/make.cross >>> git checkout af7abfba1161d2814301844fe11adac16910ea80 >>> # save the attached .config to linux build tree >>> make.cross ARCH=sh >>> >>> All warnings (new ones prefixed by >>): >>> >>> fs//hugetlbfs/inode.c: In function 'hugetlbfs_file_mmap': >>>>> fs//hugetlbfs/inode.c:118:36: warning: left shift count is negative [-Wshift-count-negative] >>> #define PGOFF_LOFFT_MAX (PAGE_MASK << (BITS_PER_LONG - (2 * PAGE_SHIFT) - 1)) >>> ^ >> >> BITS_PER_LONG = 32 (32bit config) >> PAGE_SHIFT = 16 (64K pages) >> This results in the negative shift value. >> >> I had proposed another (not so pretty way) to create the mask. >> >> #define PGOFF_LOFFT_MAX \ >> (((1UL << (PAGE_SHIFT + 1)) - 1) << (BITS_PER_LONG - (PAGE_SHIFT + 1))) >> >> This works for the above config, and should work for any. >> >> Andrew, how would you like me to update the patch? I can send a new >> version but know you have also made some changes for VM_WARN. Would >> you simply like a delta on top of the current patch? > > This? That will do it. Thank you, -- Mike Kravetz > > From: Andrew Morton > Subject: hugetlbfs-check-for-pgoff-value-overflow-v3-fix-fix > > fix -ve left shift count on sh > > Cc: "Kirill A . Shutemov" > Cc: Michal Hocko > Cc: Mike Kravetz > Cc: Nic Losby > Cc: Yisheng Xie > Signed-off-by: Andrew Morton > --- > > fs/hugetlbfs/inode.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff -puN mm/hugetlb.c~hugetlbfs-check-for-pgoff-value-overflow-v3-fix-fix mm/hugetlb.c > diff -puN fs/hugetlbfs/inode.c~hugetlbfs-check-for-pgoff-value-overflow-v3-fix-fix fs/hugetlbfs/inode.c > --- a/fs/hugetlbfs/inode.c~hugetlbfs-check-for-pgoff-value-overflow-v3-fix-fix > +++ a/fs/hugetlbfs/inode.c > @@ -115,7 +115,8 @@ static void huge_pagevec_release(struct > * value. The extra bit (- 1 in the shift value) is to take the sign > * bit into account. > */ > -#define PGOFF_LOFFT_MAX (PAGE_MASK << (BITS_PER_LONG - (2 * PAGE_SHIFT) - 1)) > +#define PGOFF_LOFFT_MAX \ > + (((1UL << (PAGE_SHIFT + 1)) - 1) << (BITS_PER_LONG - (PAGE_SHIFT + 1))) > > static int hugetlbfs_file_mmap(struct file *file, struct vm_area_struct *vma) > { > _ >