Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 30 May 2012 07:18:41 +0000 (UTC)
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r236299 - projects/pf/head/sys/contrib/pf/net
Message-ID:  <201205300718.q4U7IftW033377@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: glebius
Date: Wed May 30 07:18:40 2012
New Revision: 236299
URL: http://svn.freebsd.org/changeset/base/236299

Log:
  Don't drop locks before entering altq_add(), tbr_set().

Modified:
  projects/pf/head/sys/contrib/pf/net/pf_ioctl.c

Modified: projects/pf/head/sys/contrib/pf/net/pf_ioctl.c
==============================================================================
--- projects/pf/head/sys/contrib/pf/net/pf_ioctl.c	Wed May 30 07:16:49 2012	(r236298)
+++ projects/pf/head/sys/contrib/pf/net/pf_ioctl.c	Wed May 30 07:18:40 2012	(r236299)
@@ -645,9 +645,7 @@ pf_enable_altq(struct pf_altq *altq)
 	if (error == 0 && ifp != NULL && ALTQ_IS_ENABLED(&ifp->if_snd)) {
 		tb.rate = altq->ifbandwidth;
 		tb.depth = altq->tbrsize;
-		PF_UNLOCK();
 		error = tbr_set(&ifp->if_snd, &tb);
-		PF_LOCK();
 	}
 
 	return (error);
@@ -675,9 +673,7 @@ pf_disable_altq(struct pf_altq *altq)
 	if (error == 0) {
 		/* clear tokenbucket regulator */
 		tb.rate = 0;
-		PF_UNLOCK();
 		error = tbr_set(&ifp->if_snd, &tb);
-		PF_LOCK();
 	}
 
 	return (error);
@@ -729,9 +725,7 @@ pf_altq_ifnet_event(struct ifnet *ifp, i
 		    (remove && ifp1 == ifp)) {
 			a2->local_flags |= PFALTQ_FLAG_IF_REMOVED;
 		} else {
-			PF_UNLOCK();
 			error = altq_add(a2);
-			PF_LOCK();
 
 			if (ticket != V_ticket_altqs_inactive)
 				error = EBUSY;
@@ -749,7 +743,7 @@ pf_altq_ifnet_event(struct ifnet *ifp, i
 		pf_rollback_altq(ticket);
 	else
 		pf_commit_altq(ticket);
-	}
+}
 #endif /* ALTQ */
 
 static int
@@ -2089,13 +2083,11 @@ DIOCGETSTATES_full:
 			}
 		}
 
-		if ((ifp = ifunit(altq->ifname)) == NULL) {
+		if ((ifp = ifunit(altq->ifname)) == NULL)
 			altq->local_flags |= PFALTQ_FLAG_IF_REMOVED;
-		} else {
-			PF_UNLOCK();	/* XXX */
-		error = altq_add(altq);
-			PF_LOCK();
-		}
+		else
+			error = altq_add(altq);
+
 		if (error) {
 			PF_UNLOCK();
 			uma_zfree(V_pf_altq_z, altq);
@@ -3520,13 +3512,13 @@ shutdown_pf(void)
 		if ((error = pf_clear_tables()) != 0)
 			break;
 
-	#ifdef ALTQ
+#ifdef ALTQ
 		if ((error = pf_begin_altq(&t[0])) != 0) {
 			DPFPRINTF(PF_DEBUG_MISC, ("shutdown_pf: ALTQ\n"));
 			break;
 		}
 		pf_commit_altq(t[0]);
-	#endif
+#endif
 
 		pf_clear_states();
 



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