Skip to content

Commit

Permalink
icmp: RCU conversion in icmp_address_reply()
Browse files Browse the repository at this point in the history
- 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: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Eric Dumazet authored and David S. Miller committed Jun 10, 2010
1 parent 88e7594 commit cfa087f
Showing 1 changed file with 5 additions and 7 deletions.
12 changes: 5 additions & 7 deletions net/ipv4/icmp.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)) {
Expand All @@ -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)
Expand Down

0 comments on commit cfa087f

Please sign in to comment.