diff options
author | Trond Myklebust <trondmy@gmail.com> | 2019-10-24 00:43:18 +0300 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2019-11-08 20:32:59 +0300 |
commit | 2bbfed98a4d82ac4e7abfcd4eba40bddfc670b1d (patch) | |
tree | 26b916fc1bffa22169392125c49097470aa8822a /fs/nfsd/state.h | |
parent | 12357f1b2c8e0d06f34a045498d4a1e7877153ee (diff) | |
download | linux-2bbfed98a4d82ac4e7abfcd4eba40bddfc670b1d.tar.xz |
nfsd: Fix races between nfsd4_cb_release() and nfsd4_shutdown_callback()
When we're destroying the client lease, and we call
nfsd4_shutdown_callback(), we must ensure that we do not return
before all outstanding callbacks have terminated and have
released their payloads.
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd/state.h')
-rw-r--r-- | fs/nfsd/state.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h index 46f56afb6cb8..d61b83b9654c 100644 --- a/fs/nfsd/state.h +++ b/fs/nfsd/state.h @@ -367,6 +367,7 @@ struct nfs4_client { struct net *net; struct list_head async_copies; /* list of async copies */ spinlock_t async_lock; /* lock for async copies */ + atomic_t cl_cb_inflight; /* Outstanding callbacks */ }; /* struct nfs4_client_reset |