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

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

icmp: RCU conversion in icmp_address_reply()



- rcu_read_lock() already held by caller
- use __in_dev_get_rcu() instead of in_dev_get() / in_dev_put()
- remove goto out;

Signed-off-by: default avatarEric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 88e7594a
Loading
Loading
Loading
Loading
+5 −7
Original line number Diff line number Diff line
@@ -925,6 +925,7 @@ static void icmp_address(struct sk_buff *skb)
/*
 * RFC1812 (4.3.3.9).	A router SHOULD listen all replies, and complain
 *			loudly if an inconsistency is found.
 * called with rcu_read_lock()
 */

static void icmp_address_reply(struct sk_buff *skb)
@@ -935,12 +936,12 @@ static void icmp_address_reply(struct sk_buff *skb)
	struct in_ifaddr *ifa;

	if (skb->len < 4 || !(rt->rt_flags&RTCF_DIRECTSRC))
		goto out;
		return;

	in_dev = in_dev_get(dev);
	in_dev = __in_dev_get_rcu(dev);
	if (!in_dev)
		goto out;
	rcu_read_lock();
		return;

	if (in_dev->ifa_list &&
	    IN_DEV_LOG_MARTIANS(in_dev) &&
	    IN_DEV_FORWARD(in_dev)) {
@@ -958,9 +959,6 @@ static void icmp_address_reply(struct sk_buff *skb)
			       mp, dev->name, &rt->rt_src);
		}
	}
	rcu_read_unlock();
	in_dev_put(in_dev);
out:;
}

static void icmp_discard(struct sk_buff *skb)