diff options
| author | Jeff Layton <jlayton@kernel.org> | 2026-06-16 07:58:44 -0400 |
|---|---|---|
| committer | Chuck Lever <cel@kernel.org> | 2026-07-12 22:22:39 -0400 |
| commit | 898bec8f81ae2ce264e89ce05e308c764c00a46f (patch) | |
| tree | dad5af7f6cd07a848e7994ecef2d18fc28dc8a18 | |
| parent | e56ce1dba821b7f7bd3f328f0e108cfe3ea08d39 (diff) | |
| download | linux-next-898bec8f81ae2ce264e89ce05e308c764c00a46f.tar.gz linux-next-898bec8f81ae2ce264e89ce05e308c764c00a46f.zip | |
nfsd: check fl_lmops in nfsd_breaker_owns_lease()
Any lease created by nfsd will have its fl_lmops set to
nfsd_lease_mng_ops. Do a quick check for that first when testing whether
the lease breaker owns the lease.
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Acked-by: Chuck Lever <chuck.lever@oracle.com>
Link: https://patch.msgid.link/20260616-dir-deleg-v7-1-6cbc7eac0ade@kernel.org
Signed-off-by: Chuck Lever <cel@kernel.org>
| -rw-r--r-- | fs/nfsd/nfs4state.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 2a6a0c9ef65f..e18f6efbeb95 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -91,6 +91,8 @@ static void _free_cpntf_state_locked(struct nfsd_net *nn, struct nfs4_cpntf_stat static void nfsd4_file_hash_remove(struct nfs4_file *fi); static void deleg_reaper(struct nfsd_net *nn); +static const struct lease_manager_operations nfsd_lease_mng_ops; + /* Locking: */ enum nfsd4_st_mutex_lock_subclass { @@ -5748,6 +5750,10 @@ static bool nfsd_breaker_owns_lease(struct file_lease *fl) struct svc_rqst *rqst; struct nfs4_client *clp; + /* Only nfsd leases */ + if (fl->fl_lmops != &nfsd_lease_mng_ops) + return false; + rqst = nfsd_current_rqst(); if (!nfsd_v4client(rqst)) return false; |
