mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-11 17:10:13 +00:00
nfsd: use correct loop termination in nfsd4_revoke_states()
The loop in nfsd4_revoke_states() stops one too early because
the end value given is CLIENT_HASH_MASK where it should be
CLIENT_HASH_SIZE.
This means that an admin request to drop all locks for a filesystem will
miss locks held by clients which hash to the maximum possible hash value.
Fixes: 1ac3629bf012 ("nfsd: prepare for supporting admin-revocation of state")
Cc: stable@vger.kernel.org
Signed-off-by: NeilBrown <neil@brown.name>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
This commit is contained in:
parent
2857bd59fe
commit
fb321998de
@ -1780,7 +1780,7 @@ void nfsd4_revoke_states(struct net *net, struct super_block *sb)
|
|||||||
sc_types = SC_TYPE_OPEN | SC_TYPE_LOCK | SC_TYPE_DELEG | SC_TYPE_LAYOUT;
|
sc_types = SC_TYPE_OPEN | SC_TYPE_LOCK | SC_TYPE_DELEG | SC_TYPE_LAYOUT;
|
||||||
|
|
||||||
spin_lock(&nn->client_lock);
|
spin_lock(&nn->client_lock);
|
||||||
for (idhashval = 0; idhashval < CLIENT_HASH_MASK; idhashval++) {
|
for (idhashval = 0; idhashval < CLIENT_HASH_SIZE; idhashval++) {
|
||||||
struct list_head *head = &nn->conf_id_hashtbl[idhashval];
|
struct list_head *head = &nn->conf_id_hashtbl[idhashval];
|
||||||
struct nfs4_client *clp;
|
struct nfs4_client *clp;
|
||||||
retry:
|
retry:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user