summaryrefslogtreecommitdiff
path: root/sys/netinet
diff options
context:
space:
mode:
authorDavid Greenman <dg@FreeBSD.org>1997-12-18 09:42:41 +0000
committerDavid Greenman <dg@FreeBSD.org>1997-12-18 09:42:41 +0000
commit261835d9a8113168f21ba8753bf6648312b64fc5 (patch)
tree17b740a3f332807931416841fc126eb15b4f90ce /sys/netinet
parent34519663c2b96b3cb02e48bbc657c8b170cc2f04 (diff)
Notes
Diffstat (limited to 'sys/netinet')
-rw-r--r--sys/netinet/ip_divert.c13
-rw-r--r--sys/netinet/raw_ip.c12
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;