freebsd-nq/sys
Rick Macklem db8c27f499 nfsd: fix a NFSv4.1 Linux client mount stuck in CLOSE_WAIT
It was reported that a NFSv4.1 Linux client mount against
a FreeBSD12 server was hung, with the TCP connection in
CLOSE_WAIT state on the server.
When a NFSv4.1/4.2 mount is done and the back channel is
bound to the TCP connection, the soclose() is delayed until
a new TCP connection is bound to the back channel, due to
a reference count being held on the SVCXPRT structure in
the krpc for the socket. Without the soclose() call, the socket
will remain in CLOSE_WAIT and this somehow caused the Linux
client to hang.

This patch adds calls to soshutdown(.., SHUT_WR) that
are performed when the server side krpc sees that the
socket is no longer usable.  Since this can be done
before the back channel is bound to a new TCP connection,
it allows the TCP connection to proceed to CLOSED state.

PR:	254590
Reported by:	jbreitman@tildenparkcapital.com
Reviewed by:	tuexen
Comments by:	kevans
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D29526
2021-04-27 15:32:35 -07:00
..
amd64 Add FIB_ALGO to GENERIC on amd64/arm64. 2021-04-24 23:22:58 +00:00
arm allwinner: aw_mmc: Convert driver to use the mmc_sim interface 2021-04-27 19:00:42 +02:00
arm64 Move IOMMU code to a separate pmap module and switch ARM System MMU 2021-04-27 19:16:09 +01:00
bsm
cam mmccam: probe*: Style(9) 2021-04-27 19:03:16 +02:00
cddl fbt: Remove some handling for multiple CTF containers 2021-04-02 17:49:13 -04:00
compat linuxkpi: Remove unneeded {} in atomic_dec_and_lock_irqsave() 2021-04-26 08:25:33 -07:00
conf riscv: Remove old qemu compatibility code 2021-04-27 16:22:04 -05:00
contrib zfs: restore copyright disclaimer change from 4b84b4cca 2021-04-26 22:16:50 +02:00
crypto ossl: Don't encryt/decrypt too much data for chacha20. 2021-04-01 15:49:07 -07:00
ddb ddb: replace watchpoint set/clear functions 2021-03-29 12:05:44 -03:00
dev e1000: Rework em_msi_link interrupt filter 2021-04-27 15:29:39 -07:00
dts dts: Bump the freebsd branding version to 5.10 2021-03-23 15:02:21 +01:00
fs nfscl: fix the handling of NFSERR_DELAY for Open/LayoutGet RPCs 2021-04-26 17:48:21 -07:00
gdb gdb: report specific stop reason for watchpoints 2021-03-30 11:36:41 -03:00
geom gmirror: Pre-allocate the timeout event structure 2021-03-11 15:45:15 -05:00
gnu Remove the old dts imported tree. 2021-01-15 20:09:55 +01:00
i386 Create VM_MEMATTR_DEVICE on all architectures 2021-04-12 06:15:31 +00:00
isa Remove more remnants of sio(4) 2021-04-07 14:33:02 -04:00
kern imgact_elf: Ensure that the return value in parse_notes is initialized 2021-04-26 14:53:16 -04:00
kgssapi opencrypto: Introduce crypto_dispatch_async() 2021-02-08 09:19:19 -05:00
libkern x86: remove gcov kernel support 2021-04-02 15:41:51 +03:00
mips OCF: Remove support for asymmetric cryptographic operations. 2021-04-12 14:28:43 -07:00
modules modules: remove stale if_wg reference 2021-04-15 19:59:13 -05:00
net [fib algo] Delay algo init at fib growth to to allow to reliably use rib KPI. 2021-04-27 22:10:08 +00:00
net80211 net80211: prefix get_random_bytes() with net80211_ 2021-03-24 22:16:09 +00:00
netgraph ng_ubt: Block attachment of uninitialized Intel Wireless 7265 2021-04-15 17:26:32 +03:00
netinet sctp: cleanup verification of INIT and INIT-ACK chunks 2021-04-27 12:45:43 +02:00
netinet6 Re-enable network ioctls in capability mode 2021-04-23 09:22:49 -04:00
netipsec Revert "SO_RERROR indicates that receive buffer overflows should be handled as errors." 2021-02-08 22:32:32 +00:00
netpfil pf: Fix parsing of long table names 2021-04-26 18:08:15 +02:00
netsmb
nfs Fix panic when using BOOTP to resolve root path. 2021-03-28 14:02:40 -05:00
nfsclient nfs: Cleanup dead files 2021-03-17 06:16:31 +11:00
nfsserver nfs: Cleanup dead files 2021-03-17 06:16:31 +11:00
nlm
ofed LinuxKPI/OFED: (re)move inetdevice.h implementation 2021-03-30 14:40:46 +00:00
opencrypto OCF: Remove support for asymmetric cryptographic operations. 2021-04-12 14:28:43 -07:00
powerpc opal_console: fix serial console output corruption on powerpc64 2021-04-16 20:10:09 -03:00
riscv riscv: Remove old qemu compatibility code 2021-04-27 16:22:04 -05:00
rpc nfsd: fix a NFSv4.1 Linux client mount stuck in CLOSE_WAIT 2021-04-27 15:32:35 -07:00
security tcp_input/syncache: acquire only read lock on PCB for SYN,!ACK packets 2021-04-12 08:25:31 -07:00
sys param.h: bump __FreeBSD_version for commit 8759773148 2021-04-26 16:35:18 -07:00
teken
tests Add IPv4 fib lookup performance tests with uniform keys. 2021-03-30 14:32:28 +01:00
tools newbus: remove support for SINGLETON 2021-04-26 11:41:08 -06:00
ufs b_vflags update requries bufobj lock 2021-04-15 15:47:42 +03:00
vm sysctl vm.objects: report backing object and swap use 2021-04-19 21:32:01 +03:00
x86 amd64: Add MD bits for KASAN 2021-04-13 17:42:20 -04:00
xdr
xen xen: move x86-specific xen_vector_callback_enabled to sys/x86 2021-03-15 14:20:21 +01:00
Makefile