Re: [2.6.5] Bad scheduling while atomic

From: Stephen Hemminger
Date: Fri Apr 16 2004 - 15:23:00 EST


Bring up/down network devices with lapbether causes scheduling while
atomic (if preempt enabled).

The calls to rcu_read_lock are unnecessary since lapb_device_event
is called from notifier with the rtnetlink semaphore held, it is
already protected from the labp_devices list changing.

Patch against 2.6.6-rc1

diff -Nru a/drivers/net/wan/lapbether.c b/drivers/net/wan/lapbether.c
--- a/drivers/net/wan/lapbether.c Fri Apr 16 11:00:35 2004
+++ b/drivers/net/wan/lapbether.c Fri Apr 16 11:00:35 2004
@@ -392,6 +392,8 @@

/*
* Handle device status changes.
+ *
+ * Called from notifier with RTNL held.
*/
static int lapbeth_device_event(struct notifier_block *this,
unsigned long event, void *ptr)
@@ -402,7 +404,6 @@
if (!dev_is_ethdev(dev))
return NOTIFY_DONE;

- rcu_read_lock();
switch (event) {
case NETDEV_UP:
/* New ethernet device -> new LAPB interface */
@@ -422,7 +423,6 @@
lapbeth_free_device(lapbeth);
break;
}
- rcu_read_unlock();

return NOTIFY_DONE;
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/