linux/fs/ext2
Al Viro 41080b5a24 nfsd race fixes: ext2
* make ext2_new_inode() put the inode into icache in locked state
* do not unlock until the inode is fully set up; otherwise nfsd
might pick it in half-baked state.
* make sure that ext2_new_inode() does *not* lead to two inodes with the
same inumber hashed at the same time; otherwise a bogus fhandle coming
from nfsd might race with inode creation:

nfsd: iget_locked() creates inode
nfsd: try to read from disk, block on that.
ext2_new_inode(): allocate inode with that inumber
ext2_new_inode(): insert it into icache, set it up and dirty
ext2_write_inode(): get the relevant part of inode table in cache,
set the entry for our inode (and start writing to disk)
nfsd: get CPU again, look into inode table, see nice and sane on-disk
inode, set the in-core inode from it

oops - we have two in-core inodes with the same inumber live in icache,
both used for IO.  Welcome to fs corruption...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2008-12-31 18:07:43 -05:00
..
acl.c
acl.h
balloc.c CRED: Wrap task credential accesses in the Ext2 filesystem 2008-11-14 10:38:50 +11:00
dir.c [PATCH] get rid of on-stack dentry in ext2_get_parent() 2008-10-23 05:13:09 -04:00
ext2.h [PATCH] get rid of on-stack dentry in ext2_get_parent() 2008-10-23 05:13:09 -04:00
file.c
fsync.c
ialloc.c nfsd race fixes: ext2 2008-12-31 18:07:43 -05:00
inode.c ext2: ensure fast symlinks are NUL-terminated 2008-12-31 18:07:39 -05:00
ioctl.c
Kconfig
Makefile
namei.c nfsd race fixes: ext2 2008-12-31 18:07:43 -05:00
super.c
symlink.c
xattr_security.c
xattr_trusted.c
xattr_user.c
xattr.c
xattr.h
xip.c
xip.h