android_kernel_xiaomi_sm8450/fs/nfs
J. Bruce Fields 5ea5be84dd nfs: don't atempt blocking locks on nfs reexports
[ Upstream commit f657f8eef3ff870552c9fd2839e0061046f44618 ]

NFS implements blocking locks by blocking inside its lock method.  In
the reexport case, this blocks the nfs server thread, which could lead
to deadlocks since an nfs server thread might be required to unlock the
conflicting lock.  It also causes a crash, since the nfs server thread
assumes it can free the lock when its lm_notify lock callback is called.

Ideal would be to make the nfs lock method return without blocking in
this case, but for now it works just not to attempt blocking locks.  The
difference is just that the original client will have to poll (as it
does in the v4.0 case) instead of getting a callback when the lock's
available.

Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Acked-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-06-21 14:53:19 +02:00
..
blocklayout SUNRPC: Add xdr_set_scratch_page() and xdr_reset_scratch_buffer() 2024-06-21 14:52:33 +02:00
filelayout SUNRPC: Add xdr_set_scratch_page() and xdr_reset_scratch_buffer() 2024-06-21 14:52:33 +02:00
flexfilelayout SUNRPC: Add xdr_set_scratch_page() and xdr_reset_scratch_buffer() 2024-06-21 14:52:33 +02:00
cache_lib.c
cache_lib.h
callback_proc.c pNFS: Avoid a live lock condition in pnfs_update_layout() 2022-06-22 14:13:16 +02:00
callback_xdr.c SUNRPC: Make trace_svc_process() display the RPC procedure symbolically 2024-06-21 14:52:50 +02:00
callback.c
callback.h NFSv4.1: Fix uninitialised variable in devicenotify 2022-02-16 12:54:18 +01:00
client.c nfs: make the rpc_stat per net namespace 2024-05-17 11:47:59 +02:00
delegation.c NFSv4: Fix a potential state reclaim deadlock 2022-11-10 18:14:16 +01:00
delegation.h NFSv4: Fix delegation return in cases where we have to retry 2021-07-20 16:05:47 +02:00
dir.c SUNRPC: Add xdr_set_scratch_page() and xdr_reset_scratch_buffer() 2024-06-21 14:52:33 +02:00
direct.c nfs: fix UAF in direct writes 2024-04-13 12:58:31 +02:00
dns_resolve.c
dns_resolve.h
export.c nfs: don't atempt blocking locks on nfs reexports 2024-06-21 14:53:19 +02:00
file.c NFSv4: keep state manager thread active if swap is enabled 2023-03-11 16:39:38 +01:00
fs_context.c nfs: fix broken handling of the softreval mount option 2022-05-18 10:23:43 +02:00
fscache-index.c
fscache.c
fscache.h
getroot.c
inode.c nfs: Handle error of rpc_proc_register() in nfs_net_init(). 2024-05-17 11:47:59 +02:00
internal.h nfs: fix undefined behavior in nfs_block_bits() 2024-06-16 13:32:36 +02:00
io.c
iostat.h
Kconfig nfs: fix PNFS_FLEXFILE_LAYOUT Kconfig default 2021-03-30 14:31:49 +02:00
Makefile NFSv4.2: add client side xattr caching. 2020-07-13 17:52:46 -04:00
mount_clnt.c
namespace.c NFS: Fix an Oops in nfs_d_automount() 2023-01-14 10:15:34 +01:00
netns.h nfs: make the rpc_stat per net namespace 2024-05-17 11:47:59 +02:00
nfs2super.c
nfs2xdr.c NFS: Guard against READDIR loop when entry names exceed MAXNAMELEN 2023-09-19 12:20:15 +02:00
nfs3_fs.h
nfs3acl.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
nfs3client.c Revert "pNFS: nfs3_set_ds_client should set NFS_CS_NOPING" 2022-08-21 15:15:18 +02:00
nfs3proc.c nfs: fix acl memory leak of posix_acl_create() 2021-07-20 16:05:51 +02:00
nfs3super.c
nfs3xdr.c NFS: Guard against READDIR loop when entry names exceed MAXNAMELEN 2023-09-19 12:20:15 +02:00
nfs4_fs.h NFSv4: keep state manager thread active if swap is enabled 2023-03-11 16:39:38 +01:00
nfs4client.c nfs4: Fix kmemleak when allocate slot failed 2022-11-10 18:14:16 +01:00
nfs4file.c NFSv4.2: Remove ifdef CONFIG_NFSD from NFSv4.2 client SSC code. 2024-06-21 14:53:08 +02:00
nfs4getroot.c
nfs4idmap.c NFSv4: Fix races in the legacy idmapper upcall 2022-08-25 11:37:54 +02:00
nfs4idmap.h
nfs4namespace.c NFSv4 handle port presence in fs_location server string 2022-02-16 12:54:18 +01:00
nfs4proc.c NFS: Fix READ_PLUS when server doesn't support OP_READ_PLUS 2024-06-16 13:32:36 +02:00
nfs4renewd.c
nfs4session.c
nfs4session.h
nfs4state.c NFSv4: Fix a nfs4_state_manager() race 2023-10-10 21:53:38 +02:00
nfs4super.c NFS: Adjust fs_context error logging 2021-01-19 18:27:30 +01:00
nfs4sysctl.c
nfs4trace.c
nfs4trace.h nfs4trace: fix state manager flag printing 2023-03-11 16:39:38 +01:00
nfs4xdr.c SUNRPC: Add xdr_set_scratch_page() and xdr_reset_scratch_buffer() 2024-06-21 14:52:33 +02:00
nfs42.h NFSv4.2: fix listxattr maximum XDR buffer size 2024-03-26 18:22:01 -04:00
nfs42proc.c NFSv4.2: fix handling of COPY ERR_OFFLOAD_NO_REQ 2023-09-19 12:20:16 +02:00
nfs42xattr.c NFSv4.2: fix failure to unregister shrinker 2020-11-12 10:40:02 -05:00
nfs42xdr.c SUNRPC: Add xdr_set_scratch_page() and xdr_reset_scratch_buffer() 2024-06-21 14:52:33 +02:00
nfs.h
nfsroot.c NFS: Fix an off by one in root_nfs_cat() 2024-03-26 18:22:01 -04:00
nfstrace.c
nfstrace.h nfs: define and use the NFS_INO_INVALID_XATTR flag 2020-07-13 17:52:45 -04:00
pagelist.c NFS: Avoid writeback threads getting stuck in mempool_alloc() 2022-04-13 21:01:03 +02:00
pnfs_dev.c NFSv4/pnfs: minor fix for cleanup path in nfs4_get_device_info 2023-09-19 12:20:25 +02:00
pnfs_nfs.c NFS: nfsiod should not block forever in mempool_alloc() 2022-04-13 21:01:03 +02:00
pnfs.c pNFS: Fix a hang in nfs4_evict_inode() 2023-10-25 11:54:24 +02:00
pnfs.h pNFS: Avoid a live lock condition in pnfs_update_layout() 2022-06-22 14:13:16 +02:00
proc.c
read.c NFS: Trace short NFS READs 2020-06-11 13:33:48 -04:00
super.c NFSv4.2: Remove ifdef CONFIG_NFSD from NFSv4.2 client SSC code. 2024-06-21 14:53:08 +02:00
symlink.c
sysctl.c
sysfs.c NFS: rename nfs_client_kset to nfs_kset 2023-10-10 21:53:36 +02:00
sysfs.h NFSv4: Fix up RCU annotations for struct nfs_netns_client 2020-10-15 13:31:08 -04:00
unlink.c
write.c nfs: fix UAF in direct writes 2024-04-13 12:58:31 +02:00