OSDN Git Service

net/ipv6: prefer rcu_access_pointer() over rcu_dereference()
authorPaolo Abeni <pabeni@redhat.com>
Fri, 15 Feb 2019 17:15:37 +0000 (18:15 +0100)
committerDavid S. Miller <davem@davemloft.net>
Sat, 16 Feb 2019 04:25:26 +0000 (20:25 -0800)
rt6_cache_allowed_for_pmtu() checks for rt->from presence, but
it does not access the RCU protected pointer. We can use
rcu_access_pointer() and clean-up the code a bit. No functional
changes intended.

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Reviewed-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/route.c

index dc066fd..87a0561 100644 (file)
@@ -2277,14 +2277,8 @@ static void rt6_do_update_pmtu(struct rt6_info *rt, u32 mtu)
 
 static bool rt6_cache_allowed_for_pmtu(const struct rt6_info *rt)
 {
-       bool from_set;
-
-       rcu_read_lock();
-       from_set = !!rcu_dereference(rt->from);
-       rcu_read_unlock();
-
        return !(rt->rt6i_flags & RTF_CACHE) &&
-               (rt->rt6i_flags & RTF_PCPU || from_set);
+               (rt->rt6i_flags & RTF_PCPU || rcu_access_pointer(rt->from));
 }
 
 static void __ip6_rt_update_pmtu(struct dst_entry *dst, const struct sock *sk,