]> err.no Git - linux-2.6/blobdiff - net/core/dev.c
binfmt_misc: fix false -ENOEXEC when coupled with other binary handlers
[linux-2.6] / net / core / dev.c
index 819f0175bdc91645a1f48a93ae135a8c6011e608..60c51f7658870257571ee9455f95bb48888b4398 100644 (file)
@@ -1805,14 +1805,12 @@ gso:
                spin_lock(root_lock);
 
                if (unlikely(test_bit(__QDISC_STATE_DEACTIVATED, &q->state))) {
-                       spin_unlock(root_lock);
+                       kfree_skb(skb);
                        rc = NET_XMIT_DROP;
-                       goto out_kfree_skb;
+               } else {
+                       rc = qdisc_enqueue_root(skb, q);
+                       qdisc_run(q);
                }
-
-               rc = qdisc_enqueue_root(skb, q);
-               qdisc_run(q);
-
                spin_unlock(root_lock);
 
                goto out;
@@ -1992,7 +1990,9 @@ static void net_tx_action(struct softirq_action *h)
                                qdisc_run(q);
                                spin_unlock(root_lock);
                        } else {
-                               __netif_reschedule(q);
+                               if (!test_bit(__QDISC_STATE_DEACTIVATED,
+                                             &q->state))
+                                       __netif_reschedule(q);
                        }
                }
        }