lkml.org 
[lkml]   [2022]   [Oct]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 6.0 292/862] wifi: mt76: mt7921e: fix rmmod crash in driver reload test
    Date
    From: Deren Wu <deren.wu@mediatek.com>

    [ Upstream commit b5a62d612b7baf6e09884e4de94decb6391d6a9d ]

    In insmod/rmmod stress test, the following crash dump shows up immediately.
    The problem is caused by missing mt76_dev in mt7921_pci_remove(). We
    should make sure the drvdata is ready before probe() finished.

    [168.862789] ==================================================================
    [168.862797] BUG: KASAN: user-memory-access in try_to_grab_pending+0x59/0x480
    [168.862805] Write of size 8 at addr 0000000000006df0 by task rmmod/5361
    [168.862812] CPU: 7 PID: 5361 Comm: rmmod Tainted: G OE 5.19.0-rc6 #1
    [168.862816] Hardware name: Intel(R) Client Systems NUC8i7BEH/NUC8BEB, 05/04/2020
    [168.862820] Call Trace:
    [168.862822] <TASK>
    [168.862825] dump_stack_lvl+0x49/0x63
    [168.862832] print_report.cold+0x493/0x6b7
    [168.862845] kasan_report+0xa7/0x120
    [168.862857] kasan_check_range+0x163/0x200
    [168.862861] __kasan_check_write+0x14/0x20
    [168.862866] try_to_grab_pending+0x59/0x480
    [168.862870] __cancel_work_timer+0xbb/0x340
    [168.862898] cancel_work_sync+0x10/0x20
    [168.862902] mt7921_pci_remove+0x61/0x1c0 [mt7921e]
    [168.862909] pci_device_remove+0xa3/0x1d0
    [168.862914] device_remove+0xc4/0x170
    [168.862920] device_release_driver_internal+0x163/0x300
    [168.862925] driver_detach+0xc7/0x1a0
    [168.862930] bus_remove_driver+0xeb/0x2d0
    [168.862935] driver_unregister+0x71/0xb0
    [168.862939] pci_unregister_driver+0x30/0x230
    [168.862944] mt7921_pci_driver_exit+0x10/0x1b [mt7921e]
    [168.862949] __x64_sys_delete_module+0x2f9/0x4b0
    [168.862968] do_syscall_64+0x38/0x90
    [168.862973] entry_SYSCALL_64_after_hwframe+0x63/0xcd

    Test steps:
    1. insmode
    2. do not ifup
    3. rmmod quickly (within 1 second)

    Fixes: 1c71e03afe4b ("mt76: mt7921: move mt7921_init_hw in a dedicated work")
    Signed-off-by: Deren Wu <deren.wu@mediatek.com>
    Signed-off-by: Felix Fietkau <nbd@nbd.name>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/wireless/mediatek/mt76/mt7921/pci.c | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/pci.c b/drivers/net/wireless/mediatek/mt76/mt7921/pci.c
    index 2b015dacbba2..e5b1f6249763 100644
    --- a/drivers/net/wireless/mediatek/mt76/mt7921/pci.c
    +++ b/drivers/net/wireless/mediatek/mt76/mt7921/pci.c
    @@ -288,6 +288,8 @@ static int mt7921_pci_probe(struct pci_dev *pdev,
    goto err_free_pci_vec;
    }

    + pci_set_drvdata(pdev, mdev);
    +
    dev = container_of(mdev, struct mt7921_dev, mt76);
    dev->hif_ops = &mt7921_pcie_ops;

    --
    2.35.1


    \
     
     \ /
      Last update: 2022-10-19 12:44    [W:4.066 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site