lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20070111213916.GE33919298@melbourne.sgi.com>
Date:	Fri, 12 Jan 2007 08:39:16 +1100
From:	David Chinner <dgc@....com>
To:	Adrian Bunk <bunk@...sta.de>
Cc:	Linus Torvalds <torvalds@...l.org>, Andrew Morton <akpm@...l.org>,
	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
	Sami Farin <7atbggg02@...akemail.com>,
	David Chinner <dgc@....com>, xfs-masters@....sgi.com
Subject: Re: 2.6.20-rc4: known regressions with patches (v3)

On Thu, Jan 11, 2007 at 06:13:29AM +0100, Adrian Bunk wrote:
> This email lists some known regressions in 2.6.20-rc4 compared to 2.6.19
> with patches available.
> 
> Subject    : BUG: at mm/truncate.c:60 cancel_dirty_page()  (XFS)
> References : http://lkml.org/lkml/2007/1/5/308
> Submitter  : Sami Farin <7atbggg02@...akemail.com>
> Handled-By : David Chinner <dgc@....com>
> Patch      : http://lkml.org/lkml/2007/1/7/201
> Status     : patch available

Patch is broken, do not merge. The original had an off-by-one bug in
it, and the fixed one I have has just shown a worse problem than
before - partial page truncation (i.e.  filesystem block size less
than page size) is busted because invalidate_complete_page2_range() can
only handle complete pages.

Andrew - looking at unmap_mapping_pages, it says it cannot handle
partial pages and must get rid of them whereas vmtrucate() handles
partial pages but changes file size so can't be used. I see that
vmtruncate handles this by not unmapping the first partial page.

I can use the vmtruncate mechanism (unmap_mapping_pages, then
truncate_inode_pages) but that seems racy to me because we are not
actually truncating the file so a mmap could remap a page between
the unmap and the truncate and hence we still get the warning.

So the question is - is there any generic function that handles
this case (i.e. don't unmap first partial page, unmap the rest,
partial truncate of first page, complete truncate of the rest)
without racing? Or do I need to write a variation of
invalidate_inode_pages2_range() to do this?

Cheers,

Dave.
-- 
Dave Chinner
Principal Engineer
SGI Australian Software Group
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ