]> www.infradead.org Git - users/griffoul/linux.git/commitdiff
ipv6: annotate data-races around devconf->rpl_seg_enabled
authorYue Haibing <yuehaibing@huawei.com>
Mon, 1 Sep 2025 12:37:25 +0000 (20:37 +0800)
committerJakub Kicinski <kuba@kernel.org>
Wed, 3 Sep 2025 00:01:06 +0000 (17:01 -0700)
devconf->rpl_seg_enabled can be changed concurrently from
/proc/sys/net/ipv6/conf, annotate lockless reads on it.

Signed-off-by: Yue Haibing <yuehaibing@huawei.com>
Link: https://patch.msgid.link/20250901123726.1972881-2-yuehaibing@huawei.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv6/exthdrs.c

index d1ef9644f82629cde1307eaa2d21a69f2793e946..a23eb8734e151dac46a2d03d15de10ce6e45af54 100644 (file)
@@ -494,10 +494,8 @@ static int ipv6_rpl_srh_rcv(struct sk_buff *skb)
 
        idev = __in6_dev_get(skb->dev);
 
-       accept_rpl_seg = net->ipv6.devconf_all->rpl_seg_enabled;
-       if (accept_rpl_seg > idev->cnf.rpl_seg_enabled)
-               accept_rpl_seg = idev->cnf.rpl_seg_enabled;
-
+       accept_rpl_seg = min(READ_ONCE(net->ipv6.devconf_all->rpl_seg_enabled),
+                            READ_ONCE(idev->cnf.rpl_seg_enabled));
        if (!accept_rpl_seg) {
                kfree_skb(skb);
                return -1;