]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
net: macb: Use rcu_dereference() for idev->ifa_list in macb_suspend().
authorKuniyuki Iwashima <kuniyu@amazon.com>
Thu, 8 Aug 2024 04:00:21 +0000 (21:00 -0700)
committerJakub Kicinski <kuba@kernel.org>
Tue, 13 Aug 2024 01:35:02 +0000 (18:35 -0700)
In macb_suspend(), idev->ifa_list is fetched with rcu_access_pointer()
and later the pointer is dereferenced as ifa->ifa_local.

So, idev->ifa_list must be fetched with rcu_dereference().

Fixes: 0cb8de39a776 ("net: macb: Add ARP support to WOL")
Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://patch.msgid.link/20240808040021.6971-1-kuniyu@amazon.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/cadence/macb_main.c

index 11665be3a22c7a352578d608ee093a3f2aea7b95..dcd3f54ed0cf009ea0813c00ed2a6faf4a5f2399 100644 (file)
@@ -5250,8 +5250,8 @@ static int __maybe_unused macb_suspend(struct device *dev)
        if (bp->wol & MACB_WOL_ENABLED) {
                /* Check for IP address in WOL ARP mode */
                idev = __in_dev_get_rcu(bp->dev);
-               if (idev && idev->ifa_list)
-                       ifa = rcu_access_pointer(idev->ifa_list);
+               if (idev)
+                       ifa = rcu_dereference(idev->ifa_list);
                if ((bp->wolopts & WAKE_ARP) && !ifa) {
                        netdev_err(netdev, "IP address not assigned as required by WoL walk ARP\n");
                        return -EOPNOTSUPP;