freebsd-skq/sys/nlm
rmacklem 65d6047074 Intermittent crashes in the NLM (rpc.lockd) code during system
shutdown was reporetd via email. The crashes occurred because the
client side NLM would attempt to use its socket after it had been
destroyed. Looking at the code, it would soclose() once the reference
count on the socket handling structure went to 0. Unfortunately,
nlm_host_get_rpc() will simply allocate a new socket handling structure
when none exists and use the now soclose()d socket. Since there doesn't
seem to be a safe way to determine when the socket is no longer needed,
this patch modifies the code so that it never soclose()es the socket.
Since there is only one socket ever created, this does not introduce a
leak when the rpc.lockd is stopped/restarted. The patch also disables
unloading of the nfslockd module, since it is not safe to do so (and
has never been safe to do so, from what I can see).

Reported by:	mav
Tested by:	mav
MFC after:	2 weeks
2013-09-06 23:14:31 +00:00
..
nlm_advlock.c
nlm_prot_clnt.c
nlm_prot_impl.c Intermittent crashes in the NLM (rpc.lockd) code during system 2013-09-06 23:14:31 +00:00
nlm_prot_server.c
nlm_prot_svc.c
nlm_prot_xdr.c
nlm_prot.h
nlm.h
sm_inter_xdr.c
sm_inter.h