summaryrefslogtreecommitdiffstats
path: root/sys/netinet/in_pcb.c
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2006-04-22 19:10:02 +0000
committerrwatson <rwatson@FreeBSD.org>2006-04-22 19:10:02 +0000
commit2a5f091dc309c562c765dc1dc859a4fea1bdef1e (patch)
treefd7b7f28d6c54d3616a64c3c4ed4605cff8fd6b9 /sys/netinet/in_pcb.c
parent08414eb70ca4391b529a9ca57978a1364a8a79b9 (diff)
downloadFreeBSD-src-2a5f091dc309c562c765dc1dc859a4fea1bdef1e.zip
FreeBSD-src-2a5f091dc309c562c765dc1dc859a4fea1bdef1e.tar.gz
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
Diffstat (limited to 'sys/netinet/in_pcb.c')
-rw-r--r--sys/netinet/in_pcb.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/sys/netinet/in_pcb.c b/sys/netinet/in_pcb.c
index 20c56ed..26602cc 100644
--- a/sys/netinet/in_pcb.c
+++ b/sys/netinet/in_pcb.c
@@ -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;
OpenPOWER on IntegriCloud