s390: don't call iucv_path_connect from tasklet context
authorUrsula Braun <braunu@de.ibm.com>
Wed, 20 Jun 2007 11:01:30 +0000 (13:01 +0200)
committerJeff Garzik <jeff@garzik.org>
Wed, 20 Jun 2007 23:12:42 +0000 (19:12 -0400)
net/iucv/iucv.c creates the requirement for
iucv_path_connect not to be called from tasklet context anymore.
An extra checking is added in case of a failing netiucv_tx
to fulfil this requirement for netiucv.

Signed-off-by: Ursula Braun <braunu@de.ibm.com>
Signed-off-by: Frank Pavlic <fpavlic@de.ibm.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/s390/net/netiucv.c

index c358764f3264b56a478b88dce21f6ae94cc96e82..648ee132cda4886c2d01a6592479d398ba3c5ebb 100644 (file)
@@ -1315,7 +1315,8 @@ static int netiucv_tx(struct sk_buff *skb, struct net_device *dev)
         * and throw away packet.
         */
        if (fsm_getstate(privptr->fsm) != DEV_STATE_RUNNING) {
-               fsm_event(privptr->fsm, DEV_EVENT_START, dev);
+               if (!in_atomic())
+                       fsm_event(privptr->fsm, DEV_EVENT_START, dev);
                dev_kfree_skb(skb);
                privptr->stats.tx_dropped++;
                privptr->stats.tx_errors++;