svn commit: r208767 - stable/8/sys/netinet

Robert Watson rwatson at FreeBSD.org
Thu Jun 3 09:02:53 UTC 2010


Author: rwatson
Date: Thu Jun  3 09:02:53 2010
New Revision: 208767
URL: http://svn.freebsd.org/changeset/base/208767

Log:
  Merge r204826 from head to stable/8:
  
    Make udp_set_kernel_tunneling() less forgiving when its invariants are
    violated: so_pcb can never be NULL for a valid UDP socket, and it is
    always SOCK_DGRAM.  Use sotoinpcb() as the rest of the UDP code does.
  
    Reviewed by:	bz
    Sponsored by:	Juniper Networks
  
  Approved by:	re (kib)

Modified:
  stable/8/sys/netinet/udp_usrreq.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)
  stable/8/sys/geom/sched/   (props changed)

Modified: stable/8/sys/netinet/udp_usrreq.c
==============================================================================
--- stable/8/sys/netinet/udp_usrreq.c	Thu Jun  3 08:55:45 2010	(r208766)
+++ stable/8/sys/netinet/udp_usrreq.c	Thu Jun  3 09:02:53 2010	(r208767)
@@ -1439,7 +1439,7 @@ udp_attach(struct socket *so, int proto,
 		return (error);
 	}
 
-	inp = (struct inpcb *)so->so_pcb;
+	inp = sotoinpcb(so);
 	inp->inp_vflag |= INP_IPV4;
 	inp->inp_ip_ttl = V_ip_defttl;
 
@@ -1462,17 +1462,10 @@ udp_set_kernel_tunneling(struct socket *
 	struct inpcb *inp;
 	struct udpcb *up;
 
-	KASSERT(so->so_type == SOCK_DGRAM, ("udp_set_kernel_tunneling: !dgram"));
-	KASSERT(so->so_pcb != NULL, ("udp_set_kernel_tunneling: NULL inp"));
-	if (so->so_type != SOCK_DGRAM) {
-		/* Not UDP socket... sorry! */
-		return (ENOTSUP);
-	}
-	inp = (struct inpcb *)so->so_pcb;
-	if (inp == NULL) {
-		/* NULL INP? */
-		return (EINVAL);
-	}
+	KASSERT(so->so_type == SOCK_DGRAM,
+	    ("udp_set_kernel_tunneling: !dgram"));
+	inp = sotoinpcb(so);
+	KASSERT(inp != NULL, ("udp_set_kernel_tunneling: inp == NULL"));
 	INP_WLOCK(inp);
 	up = intoudpcb(inp);
 	if (up->u_tun_func != NULL) {


More information about the svn-src-stable-8 mailing list