aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/dev.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/core/dev.c')
-rw-r--r--net/core/dev.c6
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
1374out_kfree_skb: 1374out_kfree_skb:
1375 kfree_skb(skb); 1375 kfree_skb(skb);
1376 return rc; 1376 return rc;
1377out: 1377out:
1378 local_bh_enable(); 1378 rcu_read_unlock_bh();
1379 return rc; 1379 return rc;
1380} 1380}
1381 1381