Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 33d480ce authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller
Browse files

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: default avatarEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent cd28ca0a
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -2673,13 +2673,13 @@ static int get_rps_cpu(struct net_device *dev, struct sk_buff *skb,
	map = rcu_dereference(rxqueue->rps_map);
	if (map) {
		if (map->len == 1 &&
		    !rcu_dereference_raw(rxqueue->rps_flow_table)) {
		    !rcu_access_pointer(rxqueue->rps_flow_table)) {
			tcpu = map->cpus[0];
			if (cpu_online(tcpu))
				cpu = tcpu;
			goto done;
		}
	} else if (!rcu_dereference_raw(rxqueue->rps_flow_table)) {
	} else if (!rcu_access_pointer(rxqueue->rps_flow_table)) {
		goto done;
	}

@@ -5727,8 +5727,8 @@ void netdev_run_todo(void)

		/* paranoia */
		BUG_ON(netdev_refcnt_read(dev));
		WARN_ON(rcu_dereference_raw(dev->ip_ptr));
		WARN_ON(rcu_dereference_raw(dev->ip6_ptr));
		WARN_ON(rcu_access_pointer(dev->ip_ptr));
		WARN_ON(rcu_access_pointer(dev->ip6_ptr));
		WARN_ON(dev->dn_ptr);

		if (dev->destructor)
@@ -5932,7 +5932,7 @@ void free_netdev(struct net_device *dev)
	kfree(dev->_rx);
#endif

	kfree(rcu_dereference_raw(dev->ingress_queue));
	kfree(rcu_dereference_protected(dev->ingress_queue, 1));

	/* Flush device addresses */
	dev_addr_flush(dev);
+1 −1
Original line number Diff line number Diff line
@@ -545,7 +545,7 @@ static int fib_nl_fill_rule(struct sk_buff *skb, struct fib_rule *rule,
	frh->flags = rule->flags;

	if (rule->action == FR_ACT_GOTO &&
	    rcu_dereference_raw(rule->ctarget) == NULL)
	    rcu_access_pointer(rule->ctarget) == NULL)
		frh->flags |= FIB_RULE_UNRESOLVED;

	if (rule->iifname[0]) {
+2 −2
Original line number Diff line number Diff line
@@ -712,13 +712,13 @@ static void rx_queue_release(struct kobject *kobj)
	struct rps_dev_flow_table *flow_table;


	map = rcu_dereference_raw(queue->rps_map);
	map = rcu_dereference_protected(queue->rps_map, 1);
	if (map) {
		RCU_INIT_POINTER(queue->rps_map, NULL);
		kfree_rcu(map, rcu);
	}

	flow_table = rcu_dereference_raw(queue->rps_flow_table);
	flow_table = rcu_dereference_protected(queue->rps_flow_table, 1);
	if (flow_table) {
		RCU_INIT_POINTER(queue->rps_flow_table, NULL);
		call_rcu(&flow_table->rcu, rps_dev_flow_table_release);
+2 −2
Original line number Diff line number Diff line
@@ -1203,7 +1203,7 @@ int ip_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, unsi
		return -ENOENT;

	if (optname != MRT_INIT) {
		if (sk != rcu_dereference_raw(mrt->mroute_sk) &&
		if (sk != rcu_access_pointer(mrt->mroute_sk) &&
		    !capable(CAP_NET_ADMIN))
			return -EACCES;
	}
@@ -1230,7 +1230,7 @@ int ip_mroute_setsockopt(struct sock *sk, int optname, char __user *optval, unsi
		rtnl_unlock();
		return ret;
	case MRT_DONE:
		if (sk != rcu_dereference_raw(mrt->mroute_sk))
		if (sk != rcu_access_pointer(mrt->mroute_sk))
			return -EACCES;
		return ip_ra_control(sk, 0, NULL);
	case MRT_ADD_VIF:
+3 −3
Original line number Diff line number Diff line
@@ -324,7 +324,7 @@ static struct rtable *rt_cache_get_first(struct seq_file *seq)
	struct rtable *r = NULL;

	for (st->bucket = rt_hash_mask; st->bucket >= 0; --st->bucket) {
		if (!rcu_dereference_raw(rt_hash_table[st->bucket].chain))
		if (!rcu_access_pointer(rt_hash_table[st->bucket].chain))
			continue;
		rcu_read_lock_bh();
		r = rcu_dereference_bh(rt_hash_table[st->bucket].chain);
@@ -350,7 +350,7 @@ static struct rtable *__rt_cache_get_next(struct seq_file *seq,
		do {
			if (--st->bucket < 0)
				return NULL;
		} while (!rcu_dereference_raw(rt_hash_table[st->bucket].chain));
		} while (!rcu_access_pointer(rt_hash_table[st->bucket].chain));
		rcu_read_lock_bh();
		r = rcu_dereference_bh(rt_hash_table[st->bucket].chain);
	}
@@ -762,7 +762,7 @@ static void rt_do_flush(struct net *net, int process_context)

		if (process_context && need_resched())
			cond_resched();
		rth = rcu_dereference_raw(rt_hash_table[i].chain);
		rth = rcu_access_pointer(rt_hash_table[i].chain);
		if (!rth)
			continue;

Loading