diff options
author | David S. Miller <davem@davemloft.net> | 2008-08-17 23:37:16 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-08-17 23:37:16 -0700 |
commit | 96d203169d1d851ac1468f7d4459a09581be364c (patch) | |
tree | 779c9a942452b2bd0f5d7d42cdbc6fa9ca3b14c9 /net | |
parent | 13601cd8e44aab332cedff1d6dc10786ec890b7b (diff) | |
download | linux-3.10-96d203169d1d851ac1468f7d4459a09581be364c.tar.gz linux-3.10-96d203169d1d851ac1468f7d4459a09581be364c.tar.bz2 linux-3.10-96d203169d1d851ac1468f7d4459a09581be364c.zip |
pkt_sched: Fix missed RCU unlock in dev_queue_xmit()
Noticed by Jarek Poplawski.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/core/dev.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 819f0175bdc..8d133802372 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -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; |