OpenCloudOS-Kernel/fs/nfs
Trond Myklebust 1ae88b2e44 NFS: Fix an O_DIRECT Oops...
We can't call nfs_readdata_release()/nfs_writedata_release() without
first initialising and referencing args.context. Doing so inside
nfs_direct_read_schedule_segment()/nfs_direct_write_schedule_segment()
causes an Oops.

We should rather be calling nfs_readdata_free()/nfs_writedata_free() in
those cases.

Looking at the O_DIRECT code, the "struct nfs_direct_req" is already
referencing the nfs_open_context for us. Since the readdata and writedata
structures carry a reference to that, we can simplify things by getting rid
of the extra nfs_open_context references, so that we can replace all
instances of nfs_readdata_release()/nfs_writedata_release().

Reported-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Tested-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: stable@kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2009-08-12 08:21:39 -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
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 NFSv4: Convert delegation->type field to fmode_t 2008-12-23 15:21:53 -05:00
dir.c NFSv4: Fix a problem whereby a buggy server can oops the kernel 2009-07-21 19:22:38 -04:00
direct.c NFS: Fix an O_DIRECT Oops... 2009-08-12 08:21:39 -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 nfs: fix sparse warnings 2008-02-20 16:15:44 -05:00
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
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 NFS: Fix the type of struct nfs_fattr->mode 2009-03-11 14:10:26 -04:00
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 NFS: Fix misparsing of nfsv4 fs_locations attribute (take 2) 2009-03-10 20:33:17 -04:00
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 NFS: Fix an O_DIRECT Oops... 2009-08-12 08:21:39 -07:00
super.c NFS: Correct the NFS mount path when following a referral 2009-06-22 21:28:25 -07:00
symlink.c nfs: remove unnecessary NFS_NEED_* defines 2008-04-23 16:13:37 -04:00
sysctl.c [PATCH] nfs: fix congestion control 2007-03-16 19:25:05 -07:00
unlink.c nfs41: use rpc prepare call state for session reset 2009-06-17 12:25:07 -07:00
write.c NFS: Fix an O_DIRECT Oops... 2009-08-12 08:21:39 -07:00