• Jacob Keller's avatar
    fm10k: correctly clean up when init_queueing_scheme fails · 4be37c42
    Jacob Keller authored
    Fix a kernel panic that occurs during surprise removal. Clear the
    interface queue counts upon fm10k_init_msix_capability failure. This
    prevents further code (fm10k_update_stats etc.) from attempting to
    access unallocated queue vector or ring memory.
    
    [  628.692648] BUG: unable to handle kernel NULL pointer dereference at 0000000000000068
    [  628.692805] IP: [<ffffffffa0475caf>] fm10k_update_stats+0x7f/0x2c0 [fm10k]
    [  628.693173] PGD 0
    [  628.693759] Oops: 0000 [#1] SMP
    [  628.699321] CPU: 10 PID: 8164 Comm: kworker/10:0 Tainted: G           OE  ------------   3.10.0-327.el7.x86_64 #1
    [  628.700096] Hardware name: Supermicro X9DAi/X9DAi, BIOS 3.2 05/09/2015
    [  628.700894] Workqueue: pciehp-1 pciehp_power_thread
    [  628.701686] task: ffff88086559c500 ti: ffff8808593c0000 task.ti: ffff8808593c0000
    [  628.702493] RIP: 0010:[<ffffffffa0475caf>]  [<ffffffffa0475caf>] fm10k_update_stats+0x7f/0x2c0 [fm10k]
    [  628.703310] RSP: 0018:ffff8808593c3b00  EFLAGS: 00010282
    [  628.704132] RAX: 0000000000000000 RBX: ffff880860760000 RCX: 0000000000000000
    [  628.704963] RDX: ffff880860760b08 RSI: 0000000000000000 RDI: 0000000000000000
    [  628.705794] RBP: ffff8808593c3b40 R08: 0000000000000000 R09: 0000000000000000
    [  628.706604] R10: 0000000000000000 R11: ffff880860760c40 R12: 0000000000000080
    [  628.707420] R13: ffff8808607608c0 R14: ffff880860779ec0 R15: ffff880860779f40
    [  628.708238] FS:  0000000000000000(0000) GS:ffff88086f000000(0000) knlGS:0000000000000000
    [  628.709071] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  628.709923] CR2: 0000000000000068 CR3: 000000000194a000 CR4: 00000000001407e0
    [  628.710752] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  628.711596] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
    [  628.712438] Stack:
    [  628.713255]  ffff880860764458 ffff8808607608c0 ffff880860760000 ffff880860760000
    [  628.714088]  0000000000000080 ffff8808607608c0 ffff880860779ec0 ffff880860779f40
    [  628.714925]  ffff8808593c3b88 ffffffffa04780c5 ffff880860764458 0000000a8163cb5b
    [  628.715752] Call Trace:
    [  628.716560]  [<ffffffffa04780c5>] fm10k_down+0x155/0x1f0 [fm10k]
    [  628.717367]  [<ffffffffa0479958>] fm10k_close+0x28/0xd0 [fm10k]
    [  628.718184]  [<ffffffff81526365>] __dev_close_many+0x85/0xd0
    [  628.718986]  [<ffffffff815264d8>] dev_close_many+0x98/0x120
    [  628.719764]  [<ffffffff81527ab8>] rollback_registered_many+0xa8/0x230
    [  628.720527]  [<ffffffff81527c80>] rollback_registered+0x40/0x70
    [  628.721294]  [<ffffffff81529198>] unregister_netdevice_queue+0x48/0x80
    [  628.722052]  [<ffffffff815291ec>] unregister_netdev+0x1c/0x30
    [  628.722816]  [<ffffffffa04762b8>] fm10k_remove+0xd8/0xe0 [fm10k]
    [  628.723581]  [<ffffffff81328c7b>] pci_device_remove+0x3b/0xb0
    [  628.724340]  [<ffffffff813f5fbf>] __device_release_driver+0x7f/0xf0
    [  628.725088]  [<ffffffff813f6053>] device_release_driver+0x23/0x30
    [  628.725814]  [<ffffffff81321fe4>] pci_stop_bus_device+0x94/0xa0
    [  628.726535]  [<ffffffff813220d2>] pci_stop_and_remove_bus_device+0x12/0x20
    [  628.727249]  [<ffffffff8133de40>] pciehp_unconfigure_device+0xb0/0x1b0
    [  628.727964]  [<ffffffff8133d822>] pciehp_disable_slot+0x52/0xd0
    [  628.728664]  [<ffffffff8133d98a>] pciehp_power_thread+0xea/0x150
    [  628.729358]  [<ffffffff8109d5fb>] process_one_work+0x17b/0x470
    [  628.730036]  [<ffffffff8109e3cb>] worker_thread+0x11b/0x400
    [  628.730730]  [<ffffffff8109e2b0>] ? rescuer_thread+0x400/0x400
    [  628.731385]  [<ffffffff810a5aef>] kthread+0xcf/0xe0
    [  628.732036]  [<ffffffff810a5a20>] ? kthread_create_on_node+0x140/0x140
    [  628.732674]  [<ffffffff81645858>] ret_from_fork+0x58/0x90
    [  628.733289]  [<ffffffff810a5a20>] ? kthread_create_on_node+0x140/0x140
    [  628.733883] Code: 83 e8 01 48 8d 97 40 02 00 00 45 31 c0 4c 8d 9c c7 48 02 0
    [  628.735202] RIP  [<ffffffffa0475caf>] fm10k_update_stats+0x7f/0x2c0 [fm10k]
    [  628.735732]  RSP <ffff8808593c3b00>
    [  628.736285] CR2: 0000000000000068
    [  628.736846] ---[ end trace 9156088b311aff42 ]---
    Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
    Tested-by: default avatarKrishneil Singh <Krishneil.k.singh@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    4be37c42
fm10k_main.c 54.7 KB