diff options
author | rwatson <rwatson@FreeBSD.org> | 2007-02-14 12:22:11 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2007-02-14 12:22:11 +0000 |
commit | c0d4ce5ca7286852d2e2ff41cdd7fdae6d1102f7 (patch) | |
tree | 423e12199d7bd0925d85dc97489455e498e15c6b /secure/usr.bin | |
parent | 59d9c63868cc70ddfa93773887808c29f5214891 (diff) | |
download | FreeBSD-src-c0d4ce5ca7286852d2e2ff41cdd7fdae6d1102f7.zip FreeBSD-src-c0d4ce5ca7286852d2e2ff41cdd7fdae6d1102f7.tar.gz |
Change unp_mtx to supporting recursion, and do not drop the unp_mtx over
sonewconn() in unp_connect(). This avoids a race that occurs due to
v_socket being an uncounted reference, as the lock was being released in
order to call sonewconn(), which otherwise recurses into the UNIX domain
socket code via pru_attach, as well as holding the lock over a sleeping
memory allocation in uipc_attach(). Switch to a non-sleeping memory
allocation during UNIX domain socket attach.
This fix non-ideal in that it requires enabling recursion, but is a much
smaller change than moving to using true references for v_socket. The
reported panic occurs in unp_connect() following the return of
sonewconn().
Update copyright year.
Panic reported by: jhb
Diffstat (limited to 'secure/usr.bin')
0 files changed, 0 insertions, 0 deletions