Commit 33d480ce6d43326e2541fd79b3548858a174ec3c

Authored by Eric Dumazet
Committed by David S. Miller
1 parent cd28ca0a3d

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

... ... @@ -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
... ... @@ -545,7 +545,7 @@
545 545 frh->flags = rule->flags;
546 546  
547 547 if (rule->action == FR_ACT_GOTO &&
548   - rcu_dereference_raw(rule->ctarget) == NULL)
  548 + rcu_access_pointer(rule->ctarget) == NULL)
549 549 frh->flags |= FIB_RULE_UNRESOLVED;
550 550  
551 551 if (rule->iifname[0]) {
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);
... ... @@ -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:
... ... @@ -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  
... ... @@ -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))
... ... @@ -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);
... ... @@ -533,7 +533,7 @@
533 533 }
534 534 }
535 535  
536   - if (rcu_dereference_raw(sk->sk_filter)) {
  536 + if (rcu_access_pointer(sk->sk_filter)) {
537 537 if (udp_lib_checksum_complete(skb))
538 538 goto drop;
539 539 }
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