Trond Myklebust
d953126a28
NFSv4: Fix a problem whereby a buggy server can oops the kernel
...
We just had a case in which a buggy server occasionally returns the wrong
attributes during an OPEN call. While the client does catch this sort of
condition in nfs4_open_done(), and causes the nfs4_atomic_open() to return
-EISDIR, the logic in nfs_atomic_lookup() is broken, since it causes a
fallback to an ordinary lookup instead of just returning the error.
When the buggy server then returns a regular file for the fallback lookup,
the VFS allows the open, and bad things start to happen, since the open
file doesn't have any associated NFSv4 state.
The fix is firstly to return the EISDIR/ENOTDIR errors immediately, and
secondly to ensure that we are always careful when dereferencing the
nfs_open_context state pointer.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2009-07-21 19:22:38 -04:00
..
callback.c
Merge branch 'devel-for-2.6.31' into for-2.6.31
2009-06-18 18:13:44 -07:00
callback.h
nfs41: Backchannel: update cb_sequence args and results
2009-06-17 14:11:40 -07:00
callback_proc.c
nfs41: Backchannel: CB_SEQUENCE validation
2009-06-17 14:11:43 -07:00
callback_xdr.c
nfs41: Backchannel: update cb_sequence args and results
2009-06-17 14:11:40 -07:00
client.c
NFSv4: Fix an NFSv4 mount regression
2009-07-21 16:48:07 -04:00
delegation.c
headers: smp_lock.h redux
2009-07-12 12:22:34 -07:00
delegation.h
dir.c
NFSv4: Fix a problem whereby a buggy server can oops the kernel
2009-07-21 19:22:38 -04:00
direct.c
nfs41 commit sequence setup done support
2009-06-17 10:46:50 -07:00
file.c
headers: smp_lock.h redux
2009-07-12 12:22:34 -07:00
fscache-index.c
NFS: Add read context retention for FS-Cache to call back with
2009-04-03 16:42:44 +01:00
fscache.c
NFS: Store pages from an NFS inode into a local cache
2009-04-03 16:42:45 +01:00
fscache.h
NFS: Display local caching state
2009-04-03 16:42:47 +01:00
getroot.c
headers: mnt_namespace.h redux
2009-07-08 09:31:56 -07:00
idmap.c
inode.c
headers: smp_lock.h redux
2009-07-12 12:22:34 -07:00
internal.h
Merge branch 'devel-for-2.6.31' into for-2.6.31
2009-06-18 18:13:44 -07:00
iostat.h
remove put_cpu_no_resched()
2009-06-16 19:47:48 -07:00
Kconfig
Merge branch 'for-2.6.31' of git://fieldses.org/git/linux-nfsd
2009-06-22 12:55:50 -07:00
Makefile
NFS: Define and create server-level objects
2009-04-03 16:42:42 +01:00
mount_clnt.c
NFS: Remove unused XDR decoder functions
2009-06-17 18:02:13 -07:00
namespace.c
NFS: Fix nfs_path() to always return a '/' at the beginning of the path
2009-06-22 21:28:25 -07:00
nfs2xdr.c
nfs3acl.c
nfs: remove unnecessary NFS_INO_INVALID_ACL checks
2009-06-17 18:02:14 -07:00
nfs3proc.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
2009-04-02 21:09:10 -07:00
nfs3xdr.c
NFS: Fix the XDR iovec calculation in nfs3_xdr_setaclargs
2009-04-21 07:46:49 -07:00
nfs4_fs.h
NFSv4: Fix an NFSv4 mount regression
2009-07-21 16:48:07 -04:00
nfs4namespace.c
nfs4proc.c
NFSv4: Fix a problem whereby a buggy server can oops the kernel
2009-07-21 19:22:38 -04:00
nfs4renewd.c
nfs41: introduce get_state_renewal_cred
2009-06-17 12:25:11 -07:00
nfs4state.c
NFSv4: Fix an Oops in nfs4_free_lock_state
2009-07-21 16:47:46 -04:00
nfs4xdr.c
nfs41: sequence operation
2009-06-17 12:25:04 -07:00
nfsroot.c
NFS: Update MNT and MNT3 reply decoding functions
2009-06-17 18:02:13 -07:00
pagelist.c
NFS: Throttle page dirtying while we're flushing to disk
2009-03-11 14:10:30 -04:00
proc.c
NFS: Optimise NFS close()
2009-03-19 15:35:50 -04:00
read.c
headers: smp_lock.h redux
2009-07-12 12:22:34 -07:00
super.c
NFS: Correct the NFS mount path when following a referral
2009-06-22 21:28:25 -07:00
symlink.c
sysctl.c
unlink.c
nfs41: use rpc prepare call state for session reset
2009-06-17 12:25:07 -07:00
write.c
Revert "fuse: Fix build error" as unnecessary
2009-07-11 11:22:34 -07:00