linux/fs/nfs
Trond Myklebust b4946ffb18 NFS: Fix a refcount leakage in O_DIRECT
The current code is leaking a reference to dreq->kref when the calls to
nfs_direct_read_schedule() and nfs_direct_write_schedule() return an
error.
This patch moves the call to kref_put() from nfs_direct_wait() back into
nfs_direct_read() and nfs_direct_write() (which are the functions that
actually took the reference in the first place) fixing the leak.

Thanks to Denis V. Lunev for spotting the bug and proposing the original
fix.

Acked-by: Denis V. Lunev <dlunev@gmail.com>
Acked-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
2007-05-30 16:26:01 -04:00
..
callback_proc.c [PATCH] fs/nfs/callback* passes error values big-endian 2006-10-20 10:26:40 -07:00
callback_xdr.c [PATCH] knfsd: SUNRPC: Provide room in svc_rqst for larger addresses 2007-02-12 09:48:36 -08:00
callback.c [PATCH] knfsd: SUNRPC: Provide room in svc_rqst for larger addresses 2007-02-12 09:48:36 -08:00
callback.h NFS: Fix more sparse warnings 2007-05-14 19:33:46 -04:00
client.c Detach sched.h from mm.h 2007-05-21 09:18:19 -07:00
delegation.c NFS: Fix some 'sparse' warnings... 2007-05-14 19:33:46 -04:00
delegation.h NFS: Rename struct nfs4_client to struct nfs_client 2006-09-22 23:24:31 -04:00
dir.c Detach sched.h from mm.h 2007-05-21 09:18:19 -07:00
direct.c NFS: Fix a refcount leakage in O_DIRECT 2007-05-30 16:26:01 -04:00
file.c Detach sched.h from mm.h 2007-05-21 09:18:19 -07:00
getroot.c NFS: Kill the obsolete NFS_PARANOIA 2007-05-09 17:58:01 -04:00
idmap.c NFS: use __set_current_state() 2007-05-09 17:58:01 -04:00
inode.c Detach sched.h from mm.h 2007-05-21 09:18:19 -07:00
internal.h NFS: Fix a buffer overflow in the allocation of struct nfs_read/writedata 2007-04-30 22:17:07 -07:00
iostat.h NFSv4: Fix an oops in nfs4_fill_super 2006-03-20 13:44:48 -05:00
Makefile NFS: Share NFS superblocks per-protocol per-server per-FSID 2006-09-22 23:24:37 -04:00
mount_clnt.c SUNRPC: RPC buffer size estimates are too large 2007-04-30 22:17:10 -07:00
namespace.c [PATCH] mark struct inode_operations const 2 2007-02-12 09:48:46 -08:00
nfs2xdr.c NFS: Kill the obsolete NFS_PARANOIA 2007-05-09 17:58:01 -04:00
nfs3acl.c NFSv3: Client-side nfsacl caching fix 2006-06-09 09:34:11 -04:00
nfs3proc.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
nfs3xdr.c SUNRPC: RPC buffer size estimates are too large 2007-04-30 22:17:10 -07:00
nfs4_fs.h Merge branch 'master' of /home/trondmy/kernel/linux-2.6/ 2007-02-12 22:43:25 -08:00
nfs4namespace.c NFSv4: /proc/mounts displays the wrong server name for referrals 2007-02-03 15:35:10 -08:00
nfs4proc.c NFS: Fix some 'sparse' warnings... 2007-05-14 19:33:46 -04:00
nfs4renewd.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
nfs4state.c NFS: Fix some 'sparse' warnings... 2007-05-14 19:33:46 -04:00
nfs4xdr.c NFS: Fix more sparse warnings 2007-05-14 19:33:46 -04:00
nfsroot.c NFS: switch NFSROOT to use new rpcbind client 2007-04-30 22:17:14 -07:00
pagelist.c NFS: Avoid a deadlock situation on write 2007-05-24 10:44:20 -04:00
proc.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
read.c NFS: use zero_user_page 2007-05-14 19:33:45 -04:00
super.c NFS: Added support to turn off the NFSv3 READDIRPLUS RPC. 2007-04-30 22:17:16 -07:00
symlink.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
sysctl.c [PATCH] nfs: fix congestion control 2007-03-16 19:25:05 -07:00
unlink.c NFS: kzalloc conversion in fs/nfs 2006-03-20 13:44:10 -05:00
write.c NFS: Avoid a deadlock situation on write 2007-05-24 10:44:20 -04:00