[openwrt/openwrt] ipq40xx: ipqess: do not free ipqess_init

LEDE Commits lede-commits at lists.infradead.org
Sun Jun 30 02:07:07 PDT 2024


robimarko pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/515ad3ce8a8fbb062d366a08b6d4e8ce04f7f8bb

commit 515ad3ce8a8fbb062d366a08b6d4e8ce04f7f8bb
Author: John Thomson <git at johnthomson.fastmail.com.au>
AuthorDate: Sun Jun 30 08:45:47 2024 +1000

    ipq40xx: ipqess: do not free ipqess_init
    
    If this function is marked as __init, kernel will splat when driver is
    (re)bind
    echo "c080000.ethernet">/sys/bus/platform/drivers/ipqess-edma/unbind
    echo "c080000.ethernet">/sys/bus/platform/drivers/ipqess-edma/bind
    
    Example with additional print messages, functions at boot:
    [    2.039468] ipqess-edma c080000.ethernet: ipqess_axi_probe pre register_netdev
    [    2.039530] ipqess-edma c080000.ethernet: *netdev: c27d2000
    [    2.045609] ipqess-edma c080000.ethernet: &ipqess_init: c0d1e28c
    [    2.051122] ipqess_init
    [    2.057338] netdev: c27d2000
    [    2.059492] ess = netdev_priv: c27d2500
    [    2.062615] ess->pdev: c2138c00
    [    2.066174] ess->pdev->dev: c2138c10
    [    2.069314] ess->pdev->dev.of_node: ef6f6368
    [    2.073120] ess->pdev->dev.of_node: /soc/ethernet at c080000
    
    fails (bind) after unbind:
    [   34.987948] ipqess-edma c080000.ethernet: ipqess_axi_probe pre register_netdev
    [   34.988012] ipqess-edma c080000.ethernet: *netdev: c27d6000
    [   34.994088] ipqess-edma c080000.ethernet: &ipqess_init: c0d1e28c
    [   34.999652] 8<--- cut here ---
    [   35.005802] Unable to handle kernel paging request at virtual address c0d1e28c when execute
    [   35.008676] [c0d1e28c] *pgd=80c1941e(bad)
    [   35.016918] Internal error: Oops: 8000000d [#1] SMP ARM
    
    Signed-off-by: John Thomson <git at johnthomson.fastmail.com.au>
    Link: https://github.com/openwrt/openwrt/pull/15831
    Signed-off-by: Robert Marko <robimarko at gmail.com>
---
 .../700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch           | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/ipq40xx/patches-6.6/700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch b/target/linux/ipq40xx/patches-6.6/700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch
index d8805ae70f..4910307c88 100644
--- a/target/linux/ipq40xx/patches-6.6/700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch
+++ b/target/linux/ipq40xx/patches-6.6/700-net-ipqess-introduce-the-Qualcomm-IPQESS-driver.patch
@@ -655,7 +655,7 @@ Signed-off-by: Maxime Chevallier <maxime.chevallier at bootlin.com>
 +	}
 +}
 +
-+static int __init ipqess_init(struct net_device *netdev)
++static int ipqess_init(struct net_device *netdev)
 +{
 +	struct ipqess *ess = netdev_priv(netdev);
 +	struct device_node *of_node = ess->pdev->dev.of_node;




More information about the lede-commits mailing list