svn commit: r204810 - head/sys/netinet

Robert Watson rwatson at FreeBSD.org
Sat Mar 6 22:04:46 UTC 2010


Author: rwatson
Date: Sat Mar  6 22:04:45 2010
New Revision: 204810
URL: http://svn.freebsd.org/changeset/base/204810

Log:
  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).
  
  MFC after:	1 week
  Reviewed by:	bz
  Sponsored by:	Juniper Networks

Modified:
  head/sys/netinet/ip_divert.c

Modified: head/sys/netinet/ip_divert.c
==============================================================================
--- head/sys/netinet/ip_divert.c	Sat Mar  6 21:38:31 2010	(r204809)
+++ head/sys/netinet/ip_divert.c	Sat Mar  6 22:04:45 2010	(r204810)
@@ -385,7 +385,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);
 		/*
@@ -396,7 +395,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() */
@@ -437,7 +435,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);


More information about the svn-src-all mailing list