summaryrefslogtreecommitdiff
path: root/include/linux/wordpart.h
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2025-09-03 11:53:35 -0400
committerChuck Lever <chuck.lever@oracle.com>2025-11-16 18:20:11 -0500
commitbf94dea7fd4e6708d1a784be23db65eff84d82f1 (patch)
tree6767b75234807c22368795f5c4861f3365cd86cd /include/linux/wordpart.h
parent6a23ae0a96a600d1d12557add110e0bb6e32730c (diff)
downloadkernel-bf94dea7fd4e6708d1a784be23db65eff84d82f1.tar.gz
svcrdma: Release transport resources synchronously
NFSD has always supported added network listeners. The new netlink protocol now enables the removal of listeners. Olga noticed that if an RDMA listener is removed and immediately re-added, the deferred __svc_rdma_free() function might not have run yet, so some or all of the old listener's RDMA resources linger, which prevents a new listener on the same address from being created. Also, svc_xprt_free() does a module_put() just after calling ->xpo_free(). That means if there is deferred work going on, the module could be unloaded before that work is even started, resulting in a UAF. Neil asks: > What particular part of __svc_rdma_free() needs to run in order for a > subsequent registration to succeed? > Can that bit be run directory from svc_rdma_free() rather than be > delayed? > (I know almost nothing about rdma so forgive me if the answers to these > questions seems obvious) The reasons I can recall are: - Some of the transport tear-down work can sleep - Releasing a cm_id is tricky and can deadlock We might be able to mitigate the second issue with judicious application of transport reference counting. Reported-by: Olga Kornievskaia <okorniev@redhat.com> Closes: https://lore.kernel.org/linux-nfs/20250821204328.89218-1-okorniev@redhat.com/ Suggested-by: NeilBrown <neil@brown.name> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'include/linux/wordpart.h')
0 files changed, 0 insertions, 0 deletions
dit_is_compat in kernel internal headerEric Paris 2014-03-20audit: Add generic compat syscall supportAKASHI Takahiro 2014-03-20audit: Audit proc/<pid>/cmdline aka proctitleWilliam Roberts 2014-03-07Merge tag 'v3.13' into for-3.15Eric Paris 2014-01-13audit: use define's for audit versionEric Paris 2014-01-13audit: add audit_backlog_wait_time configuration optionRichard Guy Briggs 2014-01-13audit: clean up AUDIT_GET/SET local variables and future-proof APIRichard Guy Briggs 2013-11-21Merge git://git.infradead.org/users/eparis/auditLinus Torvalds 2013-11-05audit: audit feature to set loginuid immutableEric Paris 2013-11-05audit: audit feature to only allow unsetting the loginuidEric Paris 2013-11-05audit: implement generic feature setting and retrievingEric Paris 2013-11-05audit: change decimal constant to macro for invalid uidRichard Guy Briggs 2013-11-05audit: format user messages to size of MAX_AUDIT_MESSAGE_LENGTHRichard Guy Briggs 2013-09-16Drop remaining references to H8/300 architectureGuenter Roeck 2013-05-07audit: Make testing for a valid loginuid explicit.Eric W. Biederman 2013-04-30audit: add an option to control logging of passwords with pam_tty_auditRichard Guy Briggs 2013-01-11linux/audit.h: move ptrace.h include to kernel headerMike Frysinger 2013-01-11audit: create explicit AUDIT_SECCOMP event typeKees Cook 2012-10-13UAPI: (Scripted) Disintegrate include/linuxDavid Howells