]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - net/bridge/br_device.c
bridge: add rcu_read_lock on transmit
[net-next-2.6.git] / net / bridge / br_device.c
index 753fc4221f3c3587e41dfd816fd6e2771578a243..4cec8051164d6fb59212d83317b778569879043f 100644 (file)
@@ -22,7 +22,7 @@
 #include <asm/uaccess.h>
 #include "br_private.h"
 
-/* net device transmit always called with no BH (preempt_disabled) */
+/* net device transmit always called with BH disabled */
 netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev)
 {
        struct net_bridge *br = netdev_priv(dev);
@@ -46,6 +46,7 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev)
        skb_reset_mac_header(skb);
        skb_pull(skb, ETH_HLEN);
 
+       rcu_read_lock();
        if (is_multicast_ether_addr(dest)) {
                if (br_multicast_rcv(br, NULL, skb))
                        goto out;
@@ -61,6 +62,7 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev)
                br_flood_deliver(br, skb);
 
 out:
+       rcu_read_unlock();
        return NETDEV_TX_OK;
 }