asomers df22d5312e MFC r262867
Fix PR kern/185813 "SOCK_SEQPACKET AF_UNIX sockets with asymmetrical buffers
drop packets".  It was caused by a check for the space available in a
sockbuf, but it was checking the wrong sockbuf.

sys/sys/sockbuf.h
sys/kern/uipc_sockbuf.c
	Add sbappendaddr_nospacecheck_locked(), which is just like
	sbappendaddr_locked but doesn't validate the receiving socket's space.
	Factor out common code into sbappendaddr_locked_internal().  We
	shouldn't simply make sbappendaddr_locked check the space and then call
	sbappendaddr_nospacecheck_locked, because that would cause the O(n)
	function m_length to be called twice.

sys/kern/uipc_usrreq.c
	Use sbappendaddr_nospacecheck_locked for SOCK_SEQPACKET sockets,
	because the receiving sockbuf's size limit is irrelevant.

tests/sys/kern/unix_seqpacket_test.c
	Now that 185813 is fixed, pipe_128k_8k fails intermittently due to
	185812.  Make it fail every time by adding a usleep after starting the
	writer thread and before starting the reader thread in test_pipe.  That
	gives the writer time to fill up its send buffer.  Also, clear the
	expected failure message due to 185813.  It actually said "185812", but
	that was a typo.

PR:		kern/185813
2014-03-27 16:47:35 +00:00
..
2014-03-21 22:43:00 +00:00
2014-03-27 16:47:35 +00:00