65d6047074
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 |
||
---|---|---|
.. | ||
nlm_advlock.c | ||
nlm_prot_clnt.c | ||
nlm_prot_impl.c | ||
nlm_prot_server.c | ||
nlm_prot_svc.c | ||
nlm_prot_xdr.c | ||
nlm_prot.h | ||
nlm.h | ||
sm_inter_xdr.c | ||
sm_inter.h |