pkt_sched: Fix missed RCU unlock in dev_queue_xmit()
authorDavid S. Miller <davem@davemloft.net>
Mon, 18 Aug 2008 06:37:16 +0000 (23:37 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 18 Aug 2008 06:37:16 +0000 (23:37 -0700)
Noticed by Jarek Poplawski.

Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev.c

index 819f0175bdc91645a1f48a93ae135a8c6011e608..8d133802372be7c0b27fbead20cb8a3cd36dfffb 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;