[kernel] r13632 - in dists/etch/linux-2.6/debian: . patches/bugfix/all patches/series

Dann Frazier dannf at alioth.debian.org
Mon May 18 17:53:22 UTC 2009


Author: dannf
Date: Mon May 18 17:53:20 2009
New Revision: 13632

Log:
bridge: Fix oops in port_carrier_check (closes: #529165)

Added:
   dists/etch/linux-2.6/debian/patches/bugfix/all/bridge-fix-oops-in-port_carrier_check.patch
Modified:
   dists/etch/linux-2.6/debian/changelog
   dists/etch/linux-2.6/debian/patches/series/25

Modified: dists/etch/linux-2.6/debian/changelog
==============================================================================
--- dists/etch/linux-2.6/debian/changelog	Mon May 18 12:42:44 2009	(r13631)
+++ dists/etch/linux-2.6/debian/changelog	Mon May 18 17:53:20 2009	(r13632)
@@ -3,6 +3,9 @@
   [ Aurelien Jarno ]
   * [mips/mipsel] Fix errno on inexistent syscalls. (Closes: #520034).
 
+  [ dann frazier ]
+  * bridge: Fix oops in port_carrier_check (closes: #529165)
+
  -- Aurelien Jarno <aurel32 at debian.org>  Tue, 17 Mar 2009 12:07:58 +0100
 
 linux-2.6 (2.6.18.dfsg.1-24) stable; urgency=high

Added: dists/etch/linux-2.6/debian/patches/bugfix/all/bridge-fix-oops-in-port_carrier_check.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/etch/linux-2.6/debian/patches/bugfix/all/bridge-fix-oops-in-port_carrier_check.patch	Mon May 18 17:53:20 2009	(r13632)
@@ -0,0 +1,58 @@
+commit a10d567c89dfba90dde2e0515e25760fd74cde06
+Author: Jarek Poplawski <jarkao2 at o2.pl>
+Date:   Tue Feb 13 12:35:26 2007 -0800
+
+    [BRIDGE] br_if: Fix oops in port_carrier_check
+    
+    Signed-off-by: Jarek Poplawski <jarkao2 at o2.pl>
+    Acked-by: Stephen Hemminger <shemminger at linux-foundation.org>
+    Signed-off-by: David S. Miller <davem at davemloft.net>
+
+diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c
+index f35c1a3..aff6a77 100644
+--- a/net/bridge/br_if.c
++++ b/net/bridge/br_if.c
+@@ -108,6 +108,7 @@ static void port_carrier_check(struct work_struct *work)
+ 		spin_unlock_bh(&br->lock);
+ 	}
+ done:
++	dev_put(dev);
+ 	rtnl_unlock();
+ }
+ 
+@@ -161,7 +162,8 @@ static void del_nbp(struct net_bridge_port *p)
+ 
+ 	dev_set_promiscuity(dev, -1);
+ 
+-	cancel_delayed_work(&p->carrier_check);
++	if (cancel_delayed_work(&p->carrier_check))
++		dev_put(dev);
+ 
+ 	spin_lock_bh(&br->lock);
+ 	br_stp_disable_port(p);
+@@ -444,7 +446,9 @@ int br_add_if(struct net_bridge *br, struct net_device *dev)
+ 	spin_lock_bh(&br->lock);
+ 	br_stp_recalculate_bridge_id(br);
+ 	br_features_recompute(br);
+-	schedule_delayed_work(&p->carrier_check, BR_PORT_DEBOUNCE);
++	if (schedule_delayed_work(&p->carrier_check, BR_PORT_DEBOUNCE))
++		dev_hold(dev);
++
+ 	spin_unlock_bh(&br->lock);
+ 
+ 	dev_set_mtu(br->dev, br_min_mtu(br));
+diff --git a/net/bridge/br_notify.c b/net/bridge/br_notify.c
+index 8cd3e42..3311c4e 100644
+--- a/net/bridge/br_notify.c
++++ b/net/bridge/br_notify.c
+@@ -56,7 +56,9 @@ static int br_device_event(struct notifier_block *unused, unsigned long event, v
+ 
+ 	case NETDEV_CHANGE:
+ 		if (br->dev->flags & IFF_UP)
+-			schedule_delayed_work(&p->carrier_check, BR_PORT_DEBOUNCE);
++			if (schedule_delayed_work(&p->carrier_check,
++						BR_PORT_DEBOUNCE))
++				dev_hold(dev);
+ 		break;
+ 
+ 	case NETDEV_FEAT_CHANGE:

Modified: dists/etch/linux-2.6/debian/patches/series/25
==============================================================================
--- dists/etch/linux-2.6/debian/patches/series/25	Mon May 18 12:42:44 2009	(r13631)
+++ dists/etch/linux-2.6/debian/patches/series/25	Mon May 18 17:53:20 2009	(r13632)
@@ -1 +1,2 @@
 + bugfix/mips/inexistent-syscalls.patch
++ bugfix/all/bridge-fix-oops-in-port_carrier_check.patch



More information about the Kernel-svn-changes mailing list