diff options
author | jhb <jhb@FreeBSD.org> | 2013-04-08 19:03:01 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2013-04-08 19:03:01 +0000 |
commit | 4312ec3f0dd92a3dedf58a28ebc6f4ae3a1a7672 (patch) | |
tree | 13366d646862c52df55b1c45000dd9d3c0e08eed /contrib/diff/lib/exitfail.c | |
parent | 52f6f6d83eb2c4356b916617d45ecd58d775c3bd (diff) | |
download | FreeBSD-src-4312ec3f0dd92a3dedf58a28ebc6f4ae3a1a7672.zip FreeBSD-src-4312ec3f0dd92a3dedf58a28ebc6f4ae3a1a7672.tar.gz |
Fix a potential socket leak in the NFS server. If a client closes its
connection after it was accepted by the userland nfsd process but before
it was handled off to svc_vc_create() in the kernel, then svc_vc_create()
would see it as a new listen socket and try to listen on it leaving a
dangling reference to the socket. Instead, check for disconnected sockets
and treat them like a connected socket. The call to pru_getaddr() should
fail and cause svc_vc_create() to fail. Note that we need to lock the
socket to get a consistent snapshot of so_state since there is a window
in soisdisconnected() where both flags are clear.
Reviewed by: dfr, rmacklem
MFC after: 1 week
Diffstat (limited to 'contrib/diff/lib/exitfail.c')
0 files changed, 0 insertions, 0 deletions