linux/fs/ext2
Al Viro 2d7f2ea9c9 [PATCH] Fix ext2 readdir f_pos re-validation logic
This fixes not one, but _two_, silly (but admittedly hard to hit) bugs
in the ext2 filesystem "readdir()" function.  It also cleans up the code
to avoid the unnecessary goto mess.

The bugs were related to re-valiating the f_pos value after somebody had
either done an "lseek()" on the directory to an invalid offset, or when
the offset had become invalid due to a file being unlinked in the
directory.  The code would not only set the f_version too eagerly, it
would also not update f_pos appropriately for when the offset fixup took
place.

When that happened, we'd occasionally subsequently fail the readdir()
even when we shouldn't (no real harm done, but an ugly printk, and
obviously you would end up not necessarily seeing all entries).

Thanks to Masoud Sharbiani <masouds@google.com> who noticed the problem
and had a test-case for it, and also fixed up a thinko in the first
version of this patch.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Acked-by: Masoud Sharbiani <masouds@google.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-15 16:31:51 -08:00
..
Makefile [PATCH] xip: ext2: execute in place 2005-06-24 00:06:41 -07:00
acl.c [PATCH] Fix two ext[23] uninitialized warnings 2006-02-03 08:32:05 -08:00
acl.h [PATCH] remove <linux/xattr_acl.h> 2005-06-23 09:45:33 -07:00
balloc.c [PATCH] capable/capability.h (fs/) 2006-01-11 18:42:13 -08:00
bitmap.c [PATCH] fs/ext2/bitmap.c: ext2_count_free() is only required #ifdef EXT2FS_DEBUG 2006-01-10 08:01:56 -08:00
dir.c [PATCH] Fix ext2 readdir f_pos re-validation logic 2006-03-15 16:31:51 -08:00
ext2.h [PATCH] mutex subsystem, semaphore to mutex: VFS, ->i_sem 2006-01-09 15:59:24 -08:00
file.c [PATCH] xip: reduce code duplication 2005-06-24 00:06:41 -07:00
fsync.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ialloc.c [PATCH] quota: fix error code for ext2_new_inode() 2006-02-03 08:32:09 -08:00
inode.c [PATCH] Direct Migration V9: Avoid writeback / page_migrate() method 2006-02-01 08:53:17 -08:00
ioctl.c [PATCH] capable/capability.h (fs/) 2006-01-11 18:42:13 -08:00
namei.c [PATCH] ext2: remove d_splice_alias NULL check from ext2_lookup 2006-01-14 18:27:10 -08:00
super.c [PATCH] ext2: print xip mount option in ext2_show_options 2006-02-03 08:32:07 -08:00
symlink.c Fix nasty ncpfs symlink handling bug. 2005-08-19 18:02:56 -07:00
xattr.c [PATCH] fix deadlock in ext2 2006-02-17 13:59:26 -08:00
xattr.h [PATCH] ext2: Enable atomic inode security labeling 2005-09-09 13:57:27 -07:00
xattr_security.c [PATCH] ext2: Enable atomic inode security labeling 2005-09-09 13:57:27 -07:00
xattr_trusted.c [PATCH] capable/capability.h (fs/) 2006-01-11 18:42:13 -08:00
xattr_user.c [PATCH] remove ext2 xattr permission checks 2006-01-10 08:01:30 -08:00
xip.c [PATCH] fix xip sparse file handling in ext2 2005-07-27 16:25:53 -07:00
xip.h [PATCH] xip: ext2: execute in place 2005-06-24 00:06:41 -07:00