| From: Ben Hutchings <ben@decadent.org.uk> |
| Date: Fri, 01 Feb 2019 02:10:36 +0000 |
| Subject: ipv6: Fix another sparse warning on rt6i_node |
| |
| Commit 0933273ce750 "ipv6: fix sparse warning on rt6i_node" fixed some |
| sparse warnings in ip6_fib.c, but introduced a new one in |
| fib6_update_sernum() (which was removed before the corresponding |
| upstream commit). |
| |
| fib6_update_sernum() is called in a RCU read-side section, so use |
| rcu_dereference() to read rt6_info::rt6i_node. |
| |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| --- a/net/ipv6/ip6_fib.c |
| +++ b/net/ipv6/ip6_fib.c |
| @@ -1681,10 +1681,10 @@ static void fib6_prune_clones(struct net |
| static int fib6_update_sernum(struct rt6_info *rt, void *arg) |
| { |
| __u32 sernum = *(__u32 *)arg; |
| + struct fib6_node *fn = rcu_dereference(rt->rt6i_node); |
| |
| - if (rt->rt6i_node && |
| - rt->rt6i_node->fn_sernum != sernum) |
| - rt->rt6i_node->fn_sernum = sernum; |
| + if (fn && fn->fn_sernum != sernum) |
| + fn->fn_sernum = sernum; |
| |
| return 0; |
| } |