Messages in this thread Patch in this message | | | Date | Wed, 27 Aug 2014 17:18:27 +0300 | From | Andreea-Cristina Bernat <> | Subject | [PATCH] bonding: bond_alb: Replace rcu_dereference() with rcu_access_pointer() |
| |
The "curr_active_slave" local variable obtained through the rcu_dereference() call it is not dereferenced in the rest of the function. Therefore, it is recommended to use rcu_access_pointer() instead of rcu_dereference(). This patch makes the replacement.
The first step to detect this was made with the following Coccinelle semantic patch: @@ identifier p; @@
* p = rcu_dereference(...) ... when any when != p ( * if( (<+...p...+>) ) { ... } | * while( (<+...p...+>) ) { ... } ) ... when != p
After the analysis of the output, the change was made manually.
Signed-off-by: Andreea-Cristina Bernat <bernat.ada@gmail.com> --- drivers/net/bonding/bond_alb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c index 1319c5b..6621ac2 100644 --- a/drivers/net/bonding/bond_alb.c +++ b/drivers/net/bonding/bond_alb.c @@ -659,7 +659,7 @@ static struct slave *rlb_choose_channel(struct sk_buff *skb, struct bonding *bon _lock_rx_hashtbl(bond); - curr_active_slave = rcu_dereference(bond->curr_active_slave); + curr_active_slave = rcu_access_pointer(bond->curr_active_slave); hash_index = _simple_hash((u8 *)&arp->ip_dst, sizeof(arp->ip_dst)); client_info = &(bond_info->rx_hashtbl[hash_index]); -- 1.9.1
| |