Skip to content

Commit fca34cc

Browse files
edumazetdavem330
authored andcommitted
ipv6: annotate data-races around idev->cnf.ignore_routes_with_linkdown
idev->cnf.ignore_routes_with_linkdown can be used without any locks, add appropriate annotations. Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: Jiri Pirko <jiri@nvidia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent ddea75d commit fca34cc

2 files changed

Lines changed: 5 additions & 5 deletions

File tree

include/net/addrconf.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ static inline bool ip6_ignore_linkdown(const struct net_device *dev)
417417
if (unlikely(!idev))
418418
return true;
419419

420-
return !!idev->cnf.ignore_routes_with_linkdown;
420+
return !!READ_ONCE(idev->cnf.ignore_routes_with_linkdown);
421421
}
422422

423423
void inet6_ifa_finish_destroy(struct inet6_ifaddr *ifp);

net/ipv6/addrconf.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,7 @@ static int inet6_netconf_fill_devconf(struct sk_buff *skb, int ifindex,
566566

567567
if ((all || type == NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN) &&
568568
nla_put_s32(skb, NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN,
569-
devconf->ignore_routes_with_linkdown) < 0)
569+
READ_ONCE(devconf->ignore_routes_with_linkdown)) < 0)
570570
goto nla_put_failure;
571571

572572
out:
@@ -935,7 +935,7 @@ static void addrconf_linkdown_change(struct net *net, __s32 newf)
935935
if (idev) {
936936
int changed = (!idev->cnf.ignore_routes_with_linkdown) ^ (!newf);
937937

938-
idev->cnf.ignore_routes_with_linkdown = newf;
938+
WRITE_ONCE(idev->cnf.ignore_routes_with_linkdown, newf);
939939
if (changed)
940940
inet6_netconf_notify_devconf(dev_net(dev),
941941
RTM_NEWNETCONF,
@@ -956,7 +956,7 @@ static int addrconf_fixup_linkdown(struct ctl_table *table, int *p, int newf)
956956

957957
net = (struct net *)table->extra2;
958958
old = *p;
959-
*p = newf;
959+
WRITE_ONCE(*p, newf);
960960

961961
if (p == &net->ipv6.devconf_dflt->ignore_routes_with_linkdown) {
962962
if ((!newf) ^ (!old))
@@ -970,7 +970,7 @@ static int addrconf_fixup_linkdown(struct ctl_table *table, int *p, int newf)
970970
}
971971

972972
if (p == &net->ipv6.devconf_all->ignore_routes_with_linkdown) {
973-
net->ipv6.devconf_dflt->ignore_routes_with_linkdown = newf;
973+
WRITE_ONCE(net->ipv6.devconf_dflt->ignore_routes_with_linkdown, newf);
974974
addrconf_linkdown_change(net, newf);
975975
if ((!newf) ^ (!old))
976976
inet6_netconf_notify_devconf(net,

0 commit comments

Comments
 (0)