Commit 33d480ce6d43326e2541fd79b3548858a174ec3c
Committed by
David S. Miller
1 parent
cd28ca0a3d
Exists in
master
and in
38 other branches
net: cleanup some rcu_dereference_raw
RCU api had been completed and rcu_access_pointer() or rcu_dereference_protected() are better than generic rcu_dereference_raw() Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 10 changed files with 22 additions and 23 deletions Side-by-side Diff
net/core/dev.c
... | ... | @@ -2673,13 +2673,13 @@ |
2673 | 2673 | map = rcu_dereference(rxqueue->rps_map); |
2674 | 2674 | if (map) { |
2675 | 2675 | if (map->len == 1 && |
2676 | - !rcu_dereference_raw(rxqueue->rps_flow_table)) { | |
2676 | + !rcu_access_pointer(rxqueue->rps_flow_table)) { | |
2677 | 2677 | tcpu = map->cpus[0]; |
2678 | 2678 | if (cpu_online(tcpu)) |
2679 | 2679 | cpu = tcpu; |
2680 | 2680 | goto done; |
2681 | 2681 | } |
2682 | - } else if (!rcu_dereference_raw(rxqueue->rps_flow_table)) { | |
2682 | + } else if (!rcu_access_pointer(rxqueue->rps_flow_table)) { | |
2683 | 2683 | goto done; |
2684 | 2684 | } |
2685 | 2685 | |
... | ... | @@ -5727,8 +5727,8 @@ |
5727 | 5727 | |
5728 | 5728 | /* paranoia */ |
5729 | 5729 | BUG_ON(netdev_refcnt_read(dev)); |
5730 | - WARN_ON(rcu_dereference_raw(dev->ip_ptr)); | |
5731 | - WARN_ON(rcu_dereference_raw(dev->ip6_ptr)); | |
5730 | + WARN_ON(rcu_access_pointer(dev->ip_ptr)); | |
5731 | + WARN_ON(rcu_access_pointer(dev->ip6_ptr)); | |
5732 | 5732 | WARN_ON(dev->dn_ptr); |
5733 | 5733 | |
5734 | 5734 | if (dev->destructor) |
... | ... | @@ -5932,7 +5932,7 @@ |
5932 | 5932 | kfree(dev->_rx); |
5933 | 5933 | #endif |
5934 | 5934 | |
5935 | - kfree(rcu_dereference_raw(dev->ingress_queue)); | |
5935 | + kfree(rcu_dereference_protected(dev->ingress_queue, 1)); | |
5936 | 5936 | |
5937 | 5937 | /* Flush device addresses */ |
5938 | 5938 | dev_addr_flush(dev); |
net/core/fib_rules.c
net/core/net-sysfs.c
... | ... | @@ -712,13 +712,13 @@ |
712 | 712 | struct rps_dev_flow_table *flow_table; |
713 | 713 | |
714 | 714 | |
715 | - map = rcu_dereference_raw(queue->rps_map); | |
715 | + map = rcu_dereference_protected(queue->rps_map, 1); | |
716 | 716 | if (map) { |
717 | 717 | RCU_INIT_POINTER(queue->rps_map, NULL); |
718 | 718 | kfree_rcu(map, rcu); |
719 | 719 | } |
720 | 720 | |
721 | - flow_table = rcu_dereference_raw(queue->rps_flow_table); | |
721 | + flow_table = rcu_dereference_protected(queue->rps_flow_table, 1); | |
722 | 722 | if (flow_table) { |
723 | 723 | RCU_INIT_POINTER(queue->rps_flow_table, NULL); |
724 | 724 | call_rcu(&flow_table->rcu, rps_dev_flow_table_release); |
net/ipv4/ipmr.c
... | ... | @@ -1203,7 +1203,7 @@ |
1203 | 1203 | return -ENOENT; |
1204 | 1204 | |
1205 | 1205 | if (optname != MRT_INIT) { |
1206 | - if (sk != rcu_dereference_raw(mrt->mroute_sk) && | |
1206 | + if (sk != rcu_access_pointer(mrt->mroute_sk) && | |
1207 | 1207 | !capable(CAP_NET_ADMIN)) |
1208 | 1208 | return -EACCES; |
1209 | 1209 | } |
... | ... | @@ -1230,7 +1230,7 @@ |
1230 | 1230 | rtnl_unlock(); |
1231 | 1231 | return ret; |
1232 | 1232 | case MRT_DONE: |
1233 | - if (sk != rcu_dereference_raw(mrt->mroute_sk)) | |
1233 | + if (sk != rcu_access_pointer(mrt->mroute_sk)) | |
1234 | 1234 | return -EACCES; |
1235 | 1235 | return ip_ra_control(sk, 0, NULL); |
1236 | 1236 | case MRT_ADD_VIF: |
net/ipv4/route.c
... | ... | @@ -324,7 +324,7 @@ |
324 | 324 | struct rtable *r = NULL; |
325 | 325 | |
326 | 326 | for (st->bucket = rt_hash_mask; st->bucket >= 0; --st->bucket) { |
327 | - if (!rcu_dereference_raw(rt_hash_table[st->bucket].chain)) | |
327 | + if (!rcu_access_pointer(rt_hash_table[st->bucket].chain)) | |
328 | 328 | continue; |
329 | 329 | rcu_read_lock_bh(); |
330 | 330 | r = rcu_dereference_bh(rt_hash_table[st->bucket].chain); |
... | ... | @@ -350,7 +350,7 @@ |
350 | 350 | do { |
351 | 351 | if (--st->bucket < 0) |
352 | 352 | return NULL; |
353 | - } while (!rcu_dereference_raw(rt_hash_table[st->bucket].chain)); | |
353 | + } while (!rcu_access_pointer(rt_hash_table[st->bucket].chain)); | |
354 | 354 | rcu_read_lock_bh(); |
355 | 355 | r = rcu_dereference_bh(rt_hash_table[st->bucket].chain); |
356 | 356 | } |
... | ... | @@ -762,7 +762,7 @@ |
762 | 762 | |
763 | 763 | if (process_context && need_resched()) |
764 | 764 | cond_resched(); |
765 | - rth = rcu_dereference_raw(rt_hash_table[i].chain); | |
765 | + rth = rcu_access_pointer(rt_hash_table[i].chain); | |
766 | 766 | if (!rth) |
767 | 767 | continue; |
768 | 768 |
net/ipv4/udp.c
... | ... | @@ -1461,10 +1461,9 @@ |
1461 | 1461 | } |
1462 | 1462 | } |
1463 | 1463 | |
1464 | - if (rcu_dereference_raw(sk->sk_filter)) { | |
1465 | - if (udp_lib_checksum_complete(skb)) | |
1466 | - goto drop; | |
1467 | - } | |
1464 | + if (rcu_access_pointer(sk->sk_filter) && | |
1465 | + udp_lib_checksum_complete(skb)) | |
1466 | + goto drop; | |
1468 | 1467 | |
1469 | 1468 | |
1470 | 1469 | if (sk_rcvqueues_full(sk, skb)) |
net/ipv6/raw.c
... | ... | @@ -372,9 +372,9 @@ |
372 | 372 | read_unlock(&raw_v6_hashinfo.lock); |
373 | 373 | } |
374 | 374 | |
375 | -static inline int rawv6_rcv_skb(struct sock * sk, struct sk_buff * skb) | |
375 | +static inline int rawv6_rcv_skb(struct sock *sk, struct sk_buff *skb) | |
376 | 376 | { |
377 | - if ((raw6_sk(sk)->checksum || rcu_dereference_raw(sk->sk_filter)) && | |
377 | + if ((raw6_sk(sk)->checksum || rcu_access_pointer(sk->sk_filter)) && | |
378 | 378 | skb_checksum_complete(skb)) { |
379 | 379 | atomic_inc(&sk->sk_drops); |
380 | 380 | kfree_skb(skb); |
net/ipv6/udp.c
net/mac80211/mesh_pathtbl.c
... | ... | @@ -843,7 +843,7 @@ |
843 | 843 | void mesh_pathtbl_unregister(void) |
844 | 844 | { |
845 | 845 | /* no need for locking during exit path */ |
846 | - mesh_table_free(rcu_dereference_raw(mesh_paths), true); | |
847 | - mesh_table_free(rcu_dereference_raw(mpp_paths), true); | |
846 | + mesh_table_free(rcu_dereference_protected(mesh_paths, 1), true); | |
847 | + mesh_table_free(rcu_dereference_protected(mpp_paths, 1), true); | |
848 | 848 | } |
net/netlink/af_netlink.c
... | ... | @@ -1578,7 +1578,7 @@ |
1578 | 1578 | new = kzalloc(sizeof(*new) + NLGRPSZ(groups), GFP_ATOMIC); |
1579 | 1579 | if (!new) |
1580 | 1580 | return -ENOMEM; |
1581 | - old = rcu_dereference_raw(tbl->listeners); | |
1581 | + old = rcu_dereference_protected(tbl->listeners, 1); | |
1582 | 1582 | memcpy(new->masks, old->masks, NLGRPSZ(tbl->groups)); |
1583 | 1583 | rcu_assign_pointer(tbl->listeners, new); |
1584 | 1584 |