diff -ur x/linux-2.4.10.SuSE-1/drivers/isdn/isdn_net.c linux-2.4.10.SuSE-1/drivers/isdn/isdn_net.c --- x/linux-2.4.10.SuSE-1/drivers/isdn/isdn_net.c Mon Sep 24 15:53:51 2001 +++ linux-2.4.10.SuSE-1/drivers/isdn/isdn_net.c Wed Sep 26 16:32:12 2001 @@ -888,7 +888,8 @@ isdn_all_eaz(lp->isdn_device, lp->isdn_channel); } isdn_net_unbind_channel(lp); - netdev_event(d,NETDEV_REBOOT); + if (!lp->master) /* never send this event to an slave device */ + netdev_event(d,NETDEV_REBOOT); } typedef struct { diff -ur x/linux-2.4.10.SuSE-1/net/core/dev.c linux-2.4.10.SuSE-1/net/core/dev.c --- x/linux-2.4.10.SuSE-1/net/core/dev.c Mon Sep 24 15:53:51 2001 +++ linux-2.4.10.SuSE-1/net/core/dev.c Wed Sep 26 16:39:59 2001 @@ -626,15 +626,20 @@ */ void netdev_event(struct net_device *dev, int event) { - struct dev_tq *tq = kmalloc(sizeof(*tq), GFP_ATOMIC); + struct dev_tq *tq = kmalloc(sizeof(*tq), GFP_ATOMIC); if (!tq) return; + memset(tq, 0, sizeof(*tq)); dev_hold(dev); tq->dev = dev; tq->event = event; tq->tq.routine = netdev_event_callback; tq->tq.data = tq; - schedule_task(&tq->tq); + if (schedule_task(&tq->tq) == 0) { + printk(KERN_WARNING __FUNCTION__ + ": task for event %x not scheduled\n", event); + dev_put(dev); + } } /**