lkml.org 
[lkml]   [2020]   [Nov]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 20/60] net: ftgmac100: Fix crash when removing driver
    Date
    From: Joel Stanley <joel@jms.id.au>

    [ Upstream commit 3d5179458d22dc0b4fdc724e4bed4231a655112a ]

    When removing the driver we would hit BUG_ON(!list_empty(&dev->ptype_specific))
    in net/core/dev.c due to still having the NC-SI packet handler
    registered.

    # echo 1e660000.ethernet > /sys/bus/platform/drivers/ftgmac100/unbind
    ------------[ cut here ]------------
    kernel BUG at net/core/dev.c:10254!
    Internal error: Oops - BUG: 0 [#1] SMP ARM
    CPU: 0 PID: 115 Comm: sh Not tainted 5.10.0-rc3-next-20201111-00007-g02e0365710c4 #46
    Hardware name: Generic DT based system
    PC is at netdev_run_todo+0x314/0x394
    LR is at cpumask_next+0x20/0x24
    pc : [<806f5830>] lr : [<80863cb0>] psr: 80000153
    sp : 855bbd58 ip : 00000001 fp : 855bbdac
    r10: 80c03d00 r9 : 80c06228 r8 : 81158c54
    r7 : 00000000 r6 : 80c05dec r5 : 80c05d18 r4 : 813b9280
    r3 : 813b9054 r2 : 8122c470 r1 : 00000002 r0 : 00000002
    Flags: Nzcv IRQs on FIQs off Mode SVC_32 ISA ARM Segment none
    Control: 00c5387d Table: 85514008 DAC: 00000051
    Process sh (pid: 115, stack limit = 0x7cb5703d)
    ...
    Backtrace:
    [<806f551c>] (netdev_run_todo) from [<80707eec>] (rtnl_unlock+0x18/0x1c)
    r10:00000051 r9:854ed710 r8:81158c54 r7:80c76bb0 r6:81158c10 r5:8115b410
    r4:813b9000
    [<80707ed4>] (rtnl_unlock) from [<806f5db8>] (unregister_netdev+0x2c/0x30)
    [<806f5d8c>] (unregister_netdev) from [<805a8180>] (ftgmac100_remove+0x20/0xa8)
    r5:8115b410 r4:813b9000
    [<805a8160>] (ftgmac100_remove) from [<805355e4>] (platform_drv_remove+0x34/0x4c)

    Fixes: bd466c3fb5a4 ("net/faraday: Support NCSI mode")
    Signed-off-by: Joel Stanley <joel@jms.id.au>
    Link: https://lore.kernel.org/r/20201117024448.1170761-1-joel@jms.id.au
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/net/ethernet/faraday/ftgmac100.c | 4 ++++
    1 file changed, 4 insertions(+)

    --- a/drivers/net/ethernet/faraday/ftgmac100.c
    +++ b/drivers/net/ethernet/faraday/ftgmac100.c
    @@ -1860,6 +1860,8 @@ static int ftgmac100_probe(struct platfo
    return 0;

    err_ncsi_dev:
    + if (priv->ndev)
    + ncsi_unregister_dev(priv->ndev);
    err_register_netdev:
    ftgmac100_destroy_mdio(netdev);
    err_setup_mdio:
    @@ -1880,6 +1882,8 @@ static int ftgmac100_remove(struct platf
    netdev = platform_get_drvdata(pdev);
    priv = netdev_priv(netdev);

    + if (priv->ndev)
    + ncsi_unregister_dev(priv->ndev);
    unregister_netdev(netdev);

    /* There's a small chance the reset task will have been re-queued,

    \
     
     \ /
      Last update: 2020-11-23 14:40    [W:4.344 / U:0.172 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site