diff options
| author | David Greenman <dg@FreeBSD.org> | 1997-12-18 09:42:41 +0000 |
|---|---|---|
| committer | David Greenman <dg@FreeBSD.org> | 1997-12-18 09:42:41 +0000 |
| commit | 261835d9a8113168f21ba8753bf6648312b64fc5 (patch) | |
| tree | 17b740a3f332807931416841fc126eb15b4f90ce /sys/netinet | |
| parent | 34519663c2b96b3cb02e48bbc657c8b170cc2f04 (diff) | |
Notes
Diffstat (limited to 'sys/netinet')
| -rw-r--r-- | sys/netinet/ip_divert.c | 13 | ||||
| -rw-r--r-- | sys/netinet/raw_ip.c | 12 |
2 files changed, 18 insertions, 7 deletions
diff --git a/sys/netinet/ip_divert.c b/sys/netinet/ip_divert.c index 6443f742966e..7725f543aa7b 100644 --- a/sys/netinet/ip_divert.c +++ b/sys/netinet/ip_divert.c @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: ip_divert.c,v 1.1.2.3 1997/06/20 23:05:32 julian Exp $ + * $Id: ip_divert.c,v 1.1.2.4 1997/09/30 16:25:06 davidg Exp $ */ #include <sys/param.h> @@ -274,7 +274,7 @@ div_usrreq(so, req, m, nam, control) { register int error = 0; register struct inpcb *inp = sotoinpcb(so); - int s = 0; + int s; if (inp == NULL && req != PRU_ATTACH) { error = EINVAL; @@ -289,8 +289,13 @@ div_usrreq(so, req, m, nam, control) error = EACCES; break; } - if ((error = soreserve(so, div_sendspace, div_recvspace)) || - (error = in_pcballoc(so, &divcbinfo))) + s = splnet(); + error = in_pcballoc(so, &divcbinfo); + splx(s); + if (error) + break; + error = soreserve(so, div_sendspace, div_recvspace); + if (error) break; inp = (struct inpcb *)so->so_pcb; inp->inp_ip_p = (int)nam; /* XXX */ diff --git a/sys/netinet/raw_ip.c b/sys/netinet/raw_ip.c index 806b63e9c441..607185541de9 100644 --- a/sys/netinet/raw_ip.c +++ b/sys/netinet/raw_ip.c @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)raw_ip.c 8.7 (Berkeley) 5/15/95 - * $Id: raw_ip.c,v 1.37.2.3 1997/05/22 20:53:36 fenner Exp $ + * $Id: raw_ip.c,v 1.37.2.4 1997/09/30 16:25:09 davidg Exp $ */ #include <sys/param.h> @@ -327,6 +327,7 @@ rip_usrreq(so, req, m, nam, control) { register int error = 0; register struct inpcb *inp = sotoinpcb(so); + int s; if (req == PRU_CONTROL) return (in_control(so, (u_long)m, (caddr_t)nam, @@ -341,8 +342,13 @@ rip_usrreq(so, req, m, nam, control) error = EACCES; break; } - if ((error = soreserve(so, rip_sendspace, rip_recvspace)) || - (error = in_pcballoc(so, &ripcbinfo))) + s = splnet(); + error = in_pcballoc(so, &ripcbinfo); + splx(s); + if (error) + break; + error = soreserve(so, rip_sendspace, rip_recvspace); + if (error) break; inp = (struct inpcb *)so->so_pcb; inp->inp_ip_p = (int)nam; |
