From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ipmail04.adl6.internode.on.net ([150.101.137.141]:58397 "EHLO ipmail04.adl6.internode.on.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756934AbcJXDYQ (ORCPT ); Sun, 23 Oct 2016 23:24:16 -0400 Date: Mon, 24 Oct 2016 14:23:41 +1100 From: Dave Chinner To: Jan Kara Cc: Christoph Hellwig , linux-fsdevel@vger.kernel.org Subject: Re: [PATCH] fs: Do to trim high file position bits in iomap_page_mkwrite_actor Message-ID: <20161024032341.GW23194@dastard> References: <1476963342-26989-1-git-send-email-jack@suse.cz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1476963342-26989-1-git-send-email-jack@suse.cz> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Thu, Oct 20, 2016 at 01:35:42PM +0200, Jan Kara wrote: > iomap_page_mkwrite_actor() calls __block_write_begin_int() with position > masked as pos & ~PAGE_MASK which is equivalent to pos & (PAGE_SIZE-1). > Thus it masks off high bits of file position. However > __block_write_begin_int() expects full file position on input. This does > not cause any visible issues because all __block_write_begin_int() > really cares about are low file position bits but still it is a bug > waiting to happen. > > Signed-off-by: Jan Kara > --- > fs/iomap.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/fs/iomap.c b/fs/iomap.c > index 013d1d36fbbf..3341907eefc7 100644 > --- a/fs/iomap.c > +++ b/fs/iomap.c > @@ -433,8 +433,7 @@ iomap_page_mkwrite_actor(struct inode *inode, loff_t pos, loff_t length, > struct page *page = data; > int ret; > > - ret = __block_write_begin_int(page, pos & ~PAGE_MASK, length, > - NULL, iomap); > + ret = __block_write_begin_int(page, pos, length, NULL, iomap); > if (ret) > return ret; Looks good. I've added it to my -rc3 fixes series. Cheers, Dave. -- Dave Chinner david@fromorbit.com