From: Wei Fang Date: Fri, 19 Sep 2025 08:45:08 +0000 (+0800) Subject: net: enetc: fix sleeping function called from rcu_read_lock() context X-Git-Tag: v6.18-rc1~132^2~96^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=26644c90e8fbf99d381d11873c5e8861ef0029d8;p=thirdparty%2Flinux.git net: enetc: fix sleeping function called from rcu_read_lock() context The rcu_read_lock() has been introduced in __ethtool_get_ts_info() since the commit 4c61d809cf60 ("net: ethtool: Fix suspicious rcu_dereference usage"). Therefore, the device drivers cannot use any sleeping functions when implementing the callback of ethtool_ops::get_ts_info(). Currently, pci_get_slot() is used in enetc_get_ts_info(), but it calls down_read() which might sleep, so this is a potential issue. Therefore, to fix this issue, pci_get_domain_bus_and_slot() is used to replace pci_get_slot() in enetc_get_ts_info(). Reported-by: Vladimir Oltean Closes: https://lore.kernel.org/netdev/20250918124823.t3xlzn7w2glzkhnx@skbuf/ Fixes: f5b9a1cde0a2 ("net: enetc: add PTP synchronization support for ENETC v4") Signed-off-by: Wei Fang Reviewed-by: Vladimir Oltean Tested-by: Vladimir Oltean Link: https://patch.msgid.link/20250919084509.1846513-2-wei.fang@nxp.com Signed-off-by: Jakub Kicinski --- diff --git a/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c b/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c index 6215e9c68fc5b..445bfd032e0f1 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_ethtool.c @@ -895,7 +895,8 @@ static int enetc4_get_phc_index_by_pdev(struct enetc_si *si) return -1; } - timer_pdev = pci_get_slot(bus, devfn); + timer_pdev = pci_get_domain_bus_and_slot(pci_domain_nr(bus), + bus->number, devfn); if (!timer_pdev) return -1;