diff options
Diffstat (limited to 'net/core/dev.c')
-rw-r--r-- | net/core/dev.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index ab39fe17cb58..29e3888102bc 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -1295,7 +1295,7 @@ int dev_queue_xmit(struct sk_buff *skb) | |||
1295 | /* Disable soft irqs for various locks below. Also | 1295 | /* Disable soft irqs for various locks below. Also |
1296 | * stops preemption for RCU. | 1296 | * stops preemption for RCU. |
1297 | */ | 1297 | */ |
1298 | local_bh_disable(); | 1298 | rcu_read_lock_bh(); |
1299 | 1299 | ||
1300 | /* Updates of qdisc are serialized by queue_lock. | 1300 | /* Updates of qdisc are serialized by queue_lock. |
1301 | * The struct Qdisc which is pointed to by qdisc is now a | 1301 | * The struct Qdisc which is pointed to by qdisc is now a |
@@ -1369,13 +1369,13 @@ int dev_queue_xmit(struct sk_buff *skb) | |||
1369 | } | 1369 | } |
1370 | 1370 | ||
1371 | rc = -ENETDOWN; | 1371 | rc = -ENETDOWN; |
1372 | local_bh_enable(); | 1372 | rcu_read_unlock_bh(); |
1373 | 1373 | ||
1374 | out_kfree_skb: | 1374 | out_kfree_skb: |
1375 | kfree_skb(skb); | 1375 | kfree_skb(skb); |
1376 | return rc; | 1376 | return rc; |
1377 | out: | 1377 | out: |
1378 | local_bh_enable(); | 1378 | rcu_read_unlock_bh(); |
1379 | return rc; | 1379 | return rc; |
1380 | } | 1380 | } |
1381 | 1381 | ||