Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 3 Jun 2010 08:55:45 +0000 (UTC)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject:   svn commit: r208766 - stable/8/sys/netinet
Message-ID:  <201006030855.o538tjke024438@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rwatson
Date: Thu Jun  3 08:55:45 2010
New Revision: 208766
URL: http://svn.freebsd.org/changeset/base/208766

Log:
  Merge r204810 from head to stable/8:
  
    Remove unnecessary locking of divcbinfo lock from div_output(): this has
    not been required since FreeBSD 7.0 when the so_pcb pointer leading to inp
    was guaranteed to be stable when a valid socket reference is held (as it
    is in the output path).
  
    Reviewed by:	bz
    Sponsored by:	Juniper Networks
  
  Approved by:	re (kib)

Modified:
  stable/8/sys/netinet/ip_divert.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/ip_divert.c
==============================================================================
--- stable/8/sys/netinet/ip_divert.c	Thu Jun  3 03:55:22 2010	(r208765)
+++ stable/8/sys/netinet/ip_divert.c	Thu Jun  3 08:55:45 2010	(r208766)
@@ -392,7 +392,6 @@ div_output(struct socket *so, struct mbu
 		struct inpcb *inp;
 
 		dt->info |= IPFW_IS_DIVERT | IPFW_INFO_OUT;
-		INP_INFO_WLOCK(&V_divcbinfo);
 		inp = sotoinpcb(so);
 		INP_RLOCK(inp);
 		/*
@@ -403,7 +402,6 @@ div_output(struct socket *so, struct mbu
 		     ((u_short)ntohs(ip->ip_len) > m->m_pkthdr.len)) {
 			error = EINVAL;
 			INP_RUNLOCK(inp);
-			INP_INFO_WUNLOCK(&V_divcbinfo);
 			m_freem(m);
 		} else {
 			/* Convert fields to host order for ip_output() */
@@ -444,7 +442,6 @@ div_output(struct socket *so, struct mbu
 					error = ENOBUFS;
 			}
 			INP_RUNLOCK(inp);
-			INP_INFO_WUNLOCK(&V_divcbinfo);
 			if (error == ENOBUFS) {
 				m_freem(m);
 				return (error);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201006030855.o538tjke024438>