Remove pcbinfo locking from in_setsockaddr() and in_setpeeraddr();

holding the inpcb lock is sufficient to prevent races in reading
the address and port, as both the inpcb lock and pcbinfo lock are
required to change the address/port.

Improve consistency of spelling in assertions about inp != NULL.

MFC after:	3 months
This commit is contained in:
Robert Watson 2006-04-22 19:10:02 +00:00
parent 4b1ead982e
commit 6466b28a40
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=157965

View File

@ -759,14 +759,13 @@ in_setsockaddr(struct socket *so, struct sockaddr **nam,
struct in_addr addr;
in_port_t port;
INP_INFO_RLOCK(pcbinfo);
inp = sotoinpcb(so);
KASSERT(inp != NULL, ("in_setsockaddr: so_pcb == NULL"));
KASSERT(inp != NULL, ("in_setsockaddr: inp == NULL"));
INP_LOCK(inp);
port = inp->inp_lport;
addr = inp->inp_laddr;
INP_UNLOCK(inp);
INP_INFO_RUNLOCK(pcbinfo);
*nam = in_sockaddr(port, &addr);
return 0;
@ -783,14 +782,13 @@ in_setpeeraddr(struct socket *so, struct sockaddr **nam,
struct in_addr addr;
in_port_t port;
INP_INFO_RLOCK(pcbinfo);
inp = sotoinpcb(so);
KASSERT(inp != NULL, ("in_setpeeraddr: so_pcb == NULL"));
KASSERT(inp != NULL, ("in_setpeeraddr: inp == NULL"));
INP_LOCK(inp);
port = inp->inp_fport;
addr = inp->inp_faddr;
INP_UNLOCK(inp);
INP_INFO_RUNLOCK(pcbinfo);
*nam = in_sockaddr(port, &addr);
return 0;