Fix two panics:

1. panic: rtalloc1_fib: bad fibnum

2. panic: Lock tcpinp not exclusively locked
@ /usr/src/sys/netinet/in_pcb.c:1284

Submitted by:	Chelsio Inc.
MFC after:	3 days
This commit is contained in:
Kip Macy 2008-09-18 23:56:42 +00:00
parent 149bac03d9
commit 7c2bd2b9e2
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=183163

View File

@ -1733,10 +1733,9 @@ t3_tcp_ctloutput(struct socket *so, struct sockopt *sopt)
return (err);
inp = so_sotoinpcb(so);
tp = inp_inpcbtotcpcb(inp);
inp_wlock(inp);
tp = inp_inpcbtotcpcb(inp);
oldval = tp->t_flags;
if (optval)
tp->t_flags |= TF_NODELAY;
@ -3251,6 +3250,7 @@ syncache_add_accept_req(struct cpl_pass_accept_req *req, struct socket *lso, str
/*
* Fill out information for entering us into the syncache
*/
bzero(&inc, sizeof(inc));
inc.inc_fport = th.th_sport = req->peer_port;
inc.inc_lport = th.th_dport = req->local_port;
th.th_seq = req->rcv_isn;
@ -3595,6 +3595,7 @@ syncache_expand_establish_req(struct cpl_pass_establish *req, struct socket **so
/*
* Fill out information for entering us into the syncache
*/
bzero(&inc, sizeof(inc));
inc.inc_fport = th.th_sport = req->peer_port;
inc.inc_lport = th.th_dport = req->local_port;
th.th_seq = req->rcv_isn;