linux-stable/fs/nfsd
Jeff Layton 2d4a532d38 nfsd: ensure that clp->cl_revoked list is protected by clp->cl_lock
Currently, both destroy_revoked_delegation and revoke_delegation
manipulate the cl_revoked list without any locking aside from the
client_mutex. Ensure that the clp->cl_lock is held when manipulating it,
except for the list walking in destroy_client. At that point, the client
should no longer be in use, and so it should be safe to walk the list
without any locking. That also means that we don't need to do the
list_splice_init there either.

Also, the fact that revoke_delegation deletes dl_recall_lru list_head
without any locking makes it difficult to know whether it's doing so
safely in all cases. Move the list_del_init calls into the callers, and
add a WARN_ON in the event that t's passed a delegation that has a
non-empty list_head.

Signed-off-by: Jeff Layton <jlayton@primarydata.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
2014-07-29 14:49:53 -04:00
..
acl.h nfsd4: remove nfs4_acl_new 2014-07-08 17:14:27 -04:00
auth.c nfsd: silence sparse warning about accessing credentials 2014-07-17 16:15:35 -04:00
auth.h nfsd: Remove nfsd_luid, nfsd_lgid, nfsd_ruid and nfsd_rgid 2013-02-13 06:15:51 -08:00
cache.h nfsd: get rid of unused function definition 2014-01-02 17:53:23 -05:00
current_stateid.h nfsd41: use current stateid by value 2012-02-15 11:20:45 -05:00
export.c NFSD: Using exp_get for export getting 2014-06-23 11:31:36 -04:00
export.h NFSD: Using exp_get for export getting 2014-06-23 11:31:36 -04:00
fault_inject.c nfsd: properly handle embedded newlines in fault_injection input 2014-06-23 11:31:38 -04:00
idmap.h nfsd4: use xdr_reserve_space in attribute encoding 2014-05-28 14:52:34 -04:00
Kconfig nfsd: fix Kconfig syntax 2013-10-26 15:37:26 -04:00
lockd.c
Makefile NFSD: Added fault injection 2011-11-07 21:10:47 -05:00
netns.h nfsd: NFSv4 lock-owners are not associated to a specific file 2014-07-09 20:54:58 -04:00
nfs2acl.c NFSD: Check acl returned from get_acl/posix_acl_from_mode 2014-07-11 15:03:53 -04:00
nfs3acl.c NFSD: Check acl returned from get_acl/posix_acl_from_mode 2014-07-11 15:03:53 -04:00
nfs3proc.c NFSD: Remove iattr parameter from nfsd_symlink() 2014-07-08 17:14:31 -04:00
nfs3xdr.c NFSD: Using min/max/min_t/max_t for calculate 2014-06-23 11:31:36 -04:00
nfs4acl.c NFSD: Check acl returned from get_acl/posix_acl_from_mode 2014-07-11 15:03:53 -04:00
nfs4callback.c nfsd4: convert comma to semicolon 2014-07-23 14:20:49 -04:00
nfs4idmap.c nfsd4: use xdr_reserve_space in attribute encoding 2014-05-28 14:52:34 -04:00
nfs4proc.c nfsd: Convert nfs4_check_open_reclaim() to work with lookup_clientid() 2014-07-09 20:55:07 -04:00
nfs4recover.c nfsd: switch to %p[dD] 2013-10-24 23:34:51 -04:00
nfs4state.c nfsd: ensure that clp->cl_revoked list is protected by clp->cl_lock 2014-07-29 14:49:53 -04:00
nfs4xdr.c nfsd4: zero op arguments beyond the 8th compound op 2014-07-17 16:20:39 -04:00
nfscache.c nfsd: clean up sparse endianness warnings in nfscache.c 2014-06-23 11:31:37 -04:00
nfsctl.c nfsd: add a new /proc/fs/nfsd/max_connections file 2014-07-08 17:14:32 -04:00
nfsd.h NFSD: Get rid of empty function nfs4_state_init 2014-05-08 14:59:52 -04:00
nfsfh.c nfsd: add appropriate __force directives to filehandle generation code 2014-06-23 11:31:37 -04:00
nfsfh.h nfsd: add appropriate __force directives to filehandle generation code 2014-06-23 11:31:37 -04:00
nfsproc.c nfsd: add a nfserrno mapping for -E2BIG to nfserr_fbig 2014-07-09 20:55:03 -04:00
nfssvc.c nfsd: add a new /proc/fs/nfsd/max_connections file 2014-07-08 17:14:32 -04:00
nfsxdr.c NFSD: Using min/max/min_t/max_t for calculate 2014-06-23 11:31:36 -04:00
state.h nfsd: Do not let nfs4_file pin the struct inode 2014-07-23 16:35:24 -04:00
stats.c nfsd: move <linux/nfsd/stats.h> to fs/nfsd 2014-05-06 17:54:55 -04:00
stats.h nfsd: move <linux/nfsd/stats.h> to fs/nfsd 2014-05-06 17:54:55 -04:00
vfs.c nfsd: properly convert return from commit_metadata to __be32 2014-07-09 20:55:02 -04:00
vfs.h NFSD: Remove iattr parameter from nfsd_symlink() 2014-07-08 17:14:31 -04:00
xdr.h nfsd: handle vfs_getattr errors in acl protocol 2013-02-26 02:46:09 -05:00
xdr3.h nfsd: fix encode_entryplus_baggage stack usage 2014-01-23 13:50:27 -05:00
xdr4.h nfsd: Allow struct nfsd4_compound_state to cache the nfs4_client 2014-07-09 20:55:04 -04:00
xdr4cb.h nfsd4: check backchannel attributes on create_session 2013-04-09 16:53:56 -04:00