[XFS] Fix memory corruption with small buffer reads
authorChristoph Hellwig <hch@infradead.org>
Mon, 19 May 2008 06:34:42 +0000 (16:34 +1000)
committerLachlan McIlroy <lachlan@redback.melbourne.sgi.com>
Fri, 23 May 2008 08:12:49 +0000 (18:12 +1000)
commit6ab455eeaff6893cd06da33843e840d888cdc04a
treee7744d1580647ca3b08e829bcf976f2f60c49986
parentc8f5f12e46f079a954d4f7163ba59dadee08ca26
[XFS] Fix memory corruption with small buffer reads

When we have multiple buffers in a single page for a blocksize == pagesize
filesystem we might overwrite the page contents if two callers hit it
shortly after each other. To prevent that we need to keep the page locked
until I/O is completed and the page marked uptodate.

Thanks to Eric Sandeen for triaging this bug and finding a reproducible
testcase and Dave Chinner for additional advice.

This should fix kernel.org bz #10421.

Tested-by: Eric Sandeen <sandeen@sandeen.net>
SGI-PV: 981813
SGI-Modid: xfs-linux-melb:xfs-kern:31173a

Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: David Chinner <dgc@sgi.com>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
fs/xfs/linux-2.6/xfs_buf.c
fs/xfs/linux-2.6/xfs_buf.h