From a58b2f909037dae2cc7a3d6fa3d9307e20360bcf Mon Sep 17 00:00:00 2001 From: stephen hemminger Date: Tue, 27 Jul 2010 08:26:30 +0000 Subject: [PATCH] --- yaml --- r: 204031 b: refs/heads/master c: eeaf61d8891f9c9ed12c1a667e72bf83f0857954 h: refs/heads/master i: 204029: 0b29648f9405564a528f69e87b4356a395c6663e 204027: 8ff7db616de4b5636ff5158db5cdfddd2cbba736 204023: 16c3bc4787ef625dc02baca302fcfb9ca3eff019 204015: 91b8cf85501a3cfbe572ad1cf4d96370b4d26847 203999: 13515cd79b03c0844add2be16cd965fcfaa8543c 203967: dd50236ba5a602061bafe0c0c84f87e560dafad2 203903: 922ad8bf5638d6a95853edb1079a2bd241e7ac5d 203775: 2250b5950b01a05dbf21cc78aa4d615fd1d85066 v: v3 --- [refs] | 2 +- trunk/net/bridge/br_device.c | 4 +++- trunk/net/bridge/br_fdb.c | 2 +- trunk/net/bridge/br_input.c | 6 +++--- trunk/net/bridge/br_stp_bpdu.c | 2 +- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 4cd92d03d3e1..f26cd488e641 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ff847ac2d3e90edd94674c28bade25ae1e6a2e49 +refs/heads/master: eeaf61d8891f9c9ed12c1a667e72bf83f0857954 diff --git a/trunk/net/bridge/br_device.c b/trunk/net/bridge/br_device.c index 753fc4221f3c..4cec8051164d 100644 --- a/trunk/net/bridge/br_device.c +++ b/trunk/net/bridge/br_device.c @@ -22,7 +22,7 @@ #include #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; } diff --git a/trunk/net/bridge/br_fdb.c b/trunk/net/bridge/br_fdb.c index b01dde35a69e..7204ad3aff65 100644 --- a/trunk/net/bridge/br_fdb.c +++ b/trunk/net/bridge/br_fdb.c @@ -214,7 +214,7 @@ void br_fdb_delete_by_port(struct net_bridge *br, spin_unlock_bh(&br->hash_lock); } -/* No locking or refcounting, assumes caller has no preempt (rcu_read_lock) */ +/* No locking or refcounting, assumes caller has rcu_read_lock */ struct net_bridge_fdb_entry *__br_fdb_get(struct net_bridge *br, const unsigned char *addr) { diff --git a/trunk/net/bridge/br_input.c b/trunk/net/bridge/br_input.c index d36e700f7a26..114365c9eb1c 100644 --- a/trunk/net/bridge/br_input.c +++ b/trunk/net/bridge/br_input.c @@ -37,7 +37,7 @@ static int br_pass_frame_up(struct sk_buff *skb) netif_receive_skb); } -/* note: already called with rcu_read_lock (preempt_disabled) */ +/* note: already called with rcu_read_lock */ int br_handle_frame_finish(struct sk_buff *skb) { const unsigned char *dest = eth_hdr(skb)->h_dest; @@ -108,7 +108,7 @@ int br_handle_frame_finish(struct sk_buff *skb) goto out; } -/* note: already called with rcu_read_lock (preempt_disabled) */ +/* note: already called with rcu_read_lock */ static int br_handle_local_finish(struct sk_buff *skb) { struct net_bridge_port *p = rcu_dereference(skb->dev->br_port); @@ -133,7 +133,7 @@ static inline int is_link_local(const unsigned char *dest) /* * Called via br_handle_frame_hook. * Return NULL if skb is handled - * note: already called with rcu_read_lock (preempt_disabled) + * note: already called with rcu_read_lock */ struct sk_buff *br_handle_frame(struct net_bridge_port *p, struct sk_buff *skb) { diff --git a/trunk/net/bridge/br_stp_bpdu.c b/trunk/net/bridge/br_stp_bpdu.c index 217bd225a42f..5854e8285a9c 100644 --- a/trunk/net/bridge/br_stp_bpdu.c +++ b/trunk/net/bridge/br_stp_bpdu.c @@ -131,7 +131,7 @@ void br_send_tcn_bpdu(struct net_bridge_port *p) /* * Called from llc. * - * NO locks, but rcu_read_lock (preempt_disabled) + * NO locks, but rcu_read_lock */ void br_stp_rcv(const struct stp_proto *proto, struct sk_buff *skb, struct net_device *dev)