diff options
author | Jeff Layton <jlayton@kernel.org> | 2022-10-28 08:13:53 -0400 |
---|---|---|
committer | Chuck Lever <chuck.lever@oracle.com> | 2022-11-28 12:54:45 -0500 |
commit | e0aa651068bfd520afcd357af8ecd2de005fc83d (patch) | |
tree | 5a405e6443fca8601ea654cafcd35098e39f02c6 /fs/coda | |
parent | 427505ffeaa464f683faba945a88d3e3248f6979 (diff) |
nfsd: don't call nfsd_file_put from client states seqfile display
We had a report of this:
BUG: sleeping function called from invalid context at fs/nfsd/filecache.c:440
...with a stack trace showing nfsd_file_put being called from
nfs4_show_open. This code has always tried to call fput while holding a
spinlock, but we recently changed this to use the filecache, and that
started triggering the might_sleep() in nfsd_file_put.
states_start takes and holds the cl_lock while iterating over the
client's states, and we can't sleep with that held.
Have the various nfs4_show_* functions instead hold the fi_lock instead
of taking a nfsd_file reference.
Fixes: 78599c42ae3c ("nfsd4: add file to display list of client's opens")
Link: https://bugzilla.redhat.com/show_bug.cgi?id=2138357
Reported-by: Zhi Li <yieli@redhat.com>
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'fs/coda')
0 files changed, 0 insertions, 0 deletions