summaryrefslogtreecommitdiffstats
path: root/mm/page-writeback.c
diff options
context:
space:
mode:
authorDave Chinner2010-08-24 03:42:30 +0200
committerDave Chinner2010-08-24 03:42:30 +0200
commit4536f2ad8b330453d7ebec0746c4374eadd649b1 (patch)
tree55e4804119f4629279b1848b2a35eaf297b1d5bc /mm/page-writeback.c
parentxfs: ensure we mark all inodes in a freed cluster XFS_ISTALE (diff)
downloadkernel-qcow2-linux-4536f2ad8b330453d7ebec0746c4374eadd649b1.tar.gz
kernel-qcow2-linux-4536f2ad8b330453d7ebec0746c4374eadd649b1.tar.xz
kernel-qcow2-linux-4536f2ad8b330453d7ebec0746c4374eadd649b1.zip
xfs: fix untrusted inode number lookup
Commit 7124fe0a5b619d65b739477b3b55a20bf805b06d ("xfs: validate untrusted inode numbers during lookup") changes the inode lookup code to do btree lookups for untrusted inode numbers. This change made an invalid assumption about the alignment of inodes and hence incorrectly calculated the first inode in the cluster. As a result, some inode numbers were being incorrectly considered invalid when they were actually valid. The issue was not picked up by the xfstests suite because it always runs fsr and dump (the two utilities that utilise the bulkstat interface) on cache hot inodes and hence the lookup code in the cold cache path was not sufficiently exercised to uncover this intermittent problem. Fix the issue by relaxing the btree lookup criteria and then checking if the record returned contains the inode number we are lookup for. If it we get an incorrect record, then the inode number is invalid. Cc: <stable@kernel.org> Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'mm/page-writeback.c')
0 files changed, 0 insertions, 0 deletions