• Grzegorz Szczurek's avatar
    i40e: Fix crash during removing i40e driver · 5b6d4a7f
    Grzegorz Szczurek authored
    Fix the reason of crashing system by add waiting time to finish reset
    recovery process before starting remove driver procedure.
    Now VSI is releasing if VSI is not in reset recovery mode.
    Without this fix it was possible to start remove driver if other
    processing command need reset recovery procedure which resulted in
    null pointer dereference. VSI used by the ethtool process has been
    cleared by remove driver process.
    
    [ 6731.508665] BUG: kernel NULL pointer dereference, address: 0000000000000000
    [ 6731.508668] #PF: supervisor read access in kernel mode
    [ 6731.508670] #PF: error_code(0x0000) - not-present page
    [ 6731.508671] PGD 0 P4D 0
    [ 6731.508674] Oops: 0000 [#1] SMP PTI
    [ 6731.508679] Hardware name: Intel Corporation S2600WT2R/S2600WT2R, BIOS SE5C610.86B.01.01.0021.032120170601 03/21/2017
    [ 6731.508694] RIP: 0010:i40e_down+0x252/0x310 [i40e]
    [ 6731.508696] Code: c7 78 de fa c0 e8 61 02 3a c1 66 83 bb f6 0c 00 00 00 0f 84 bf 00 00 00 45 31 e4 45 31 ff eb 03 41 89 c7 48 8b 83 98 0c 00 00 <4a> 8b 3c 20 e8 a5 79 02 00 48 83 bb d0 0c 00 00 00 74 10 48 8b 83
    [ 6731.508698] RSP: 0018:ffffb75ac7b3faf0 EFLAGS: 00010246
    [ 6731.508700] RAX: 0000000000000000 RBX: ffff9c9874bd5000 RCX: 0000000000000007
    [ 6731.508701] RDX: 0000000000000000 RSI: 0000000000000096 RDI: ffff9c987f4d9780
    [ 6731.508703] RBP: ffffb75ac7b3fb30 R08: 0000000000005b60 R09: 0000000000000004
    [ 6731.508704] R10: ffffb75ac64fbd90 R11: 0000000000000001 R12: 0000000000000000
    [ 6731.508706] R13: ffff9c97a08e0000 R14: ffff9c97a08e0a68 R15: 0000000000000000
    [ 6731.508708] FS:  00007f2617cd2740(0000) GS:ffff9c987f4c0000(0000) knlGS:0000000000000000
    [ 6731.508710] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 6731.508711] CR2: 0000000000000000 CR3: 0000001e765c4006 CR4: 00000000003606e0
    [ 6731.508713] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [ 6731.508714] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [ 6731.508715] Call Trace:
    [ 6731.508734]  i40e_vsi_close+0x84/0x90 [i40e]
    [ 6731.508742]  i40e_quiesce_vsi.part.98+0x3c/0x40 [i40e]
    [ 6731.508749]  i40e_pf_quiesce_all_vsi+0x55/0x60 [i40e]
    [ 6731.508757]  i40e_prep_for_reset+0x59/0x130 [i40e]
    [ 6731.508765]  i40e_reconfig_rss_queues+0x5a/0x120 [i40e]
    [ 6731.508774]  i40e_set_channels+0xda/0x170 [i40e]
    [ 6731.508778]  ethtool_set_channels+0xe9/0x150
    [ 6731.508781]  dev_ethtool+0x1b94/0x2920
    [ 6731.508805]  dev_ioctl+0xc2/0x590
    [ 6731.508811]  sock_do_ioctl+0xae/0x150
    [ 6731.508813]  sock_ioctl+0x34f/0x3c0
    [ 6731.508821]  ksys_ioctl+0x98/0xb0
    [ 6731.508828]  __x64_sys_ioctl+0x1a/0x20
    [ 6731.508831]  do_syscall_64+0x57/0x1c0
    [ 6731.508835]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    Fixes: 4b816446 ("i40e: Add common function for finding VSI by type")
    Signed-off-by: default avatarGrzegorz Szczurek <grzegorzx.szczurek@intel.com>
    Signed-off-by: default avatarArkadiusz Kubalewski <arkadiusz.kubalewski@intel.com>
    Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    5b6d4a7f
i40e_main.c 439 KB