All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-wired-lan] [PATCH net-next v3] iavf: Do not modify queue number when removing iavf driver
@ 2022-06-08  9:37 Jedrzej Jagielski
  2022-06-08 12:18 ` Jagielski, Jedrzej
  0 siblings, 1 reply; 2+ messages in thread
From: Jedrzej Jagielski @ 2022-06-08  9:37 UTC (permalink / raw)
  To: intel-wired-lan; +Cc: Jedrzej Jagielski

From: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>

If VF has configured tc qdisc with number of queues less than original
set and then the driver went in removing process, tc resources are also
releasing. Attempt of modify real num tx/rx in this state is causing
call trace, because kernel is trying to release uninitialized queues

Fix it by not modifying the number of queues when removing a driver

Call Trace:
  net_rx_queue_update_kobjects+0x10c/0x160
  netdev_unregister_kobject+0x4b/0x80
  rollback_registered_many+0x27b/0x550
  rollback_registered+0x56/0x90
  unregister_netdevice_queue+0x73/0xb0
  unregister_netdev+0x18/0x20
  iavf_remove+0x421/0x440 [iavf]
  pci_device_remove+0x3b/0xc0
  device_release_driver_internal+0x18c/0x250
  driver_detach+0x39/0x6d
  bus_remove_driver+0x77/0xc9
  pci_unregister_driver+0x2d/0xb0
  iavf_exit_module+0xc/0xb9a [iavf]
  __x64_sys_delete_module+0x139/0x270
  do_syscall_64+0x5b/0x1b0
  entry_SYSCALL_64_after_hwframe+0x65/0xca
 RIP: 0033:0x7f6e29645a8b
 Code: 73 01 c3 48 8b 0d fd 03 2c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f
       1f 84 00 00 00 00 00 90 f3 0f 1e fa b8 b0 00 00 00 0f 05 <48> 3d 01
       f0 ff ff 73 01 c3 48 8b 0d cd 03 2c 00 f7 d8 64 89 01 48
 RSP: 002b:00007ffccf5b8098 EFLAGS: 00000206 ORIG_RAX: 00000000000000b0
 RAX: ffffffffffffffda RBX: 000055b5545f6c40 RCX: 00007f6e29645a8b
 RDX: 0000000000000000 RSI: 0000000000000800 RDI: 000055b5545f6ca8
 RBP: 000055b5545f6ca8 R08: 00007ffccf5b7041 R09: 0000000000000000
 R10: 00007f6e296b7f60 R11: 0000000000000206 R12: 0000000000000000
 R13: 0000000000000000 R14: 000055b5545f6ca8 R15: 00007ffccf5b9490

Fixes: d5b33d024496 ("i40evf: add ndo_setup_tc callback to i40evf")
Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
---
v2: split patch series into 2 seperate patches; check the exact bit - do
not use the helper function
v3: correct email addresses
---
 drivers/net/ethernet/intel/iavf/iavf_main.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/ethernet/intel/iavf/iavf_main.c b/drivers/net/ethernet/intel/iavf/iavf_main.c
index f3ecb3bca33d..81a2666acdde 100644
--- a/drivers/net/ethernet/intel/iavf/iavf_main.c
+++ b/drivers/net/ethernet/intel/iavf/iavf_main.c
@@ -3471,6 +3471,9 @@ static int __iavf_setup_tc(struct net_device *netdev, void *type_data)
 		}
 	}
 exit:
+	if (test_bit(__IAVF_IN_REMOVE_TASK, &adapter->crit_section))
+		return 0;
+
 	return ret;
 }
 
-- 
2.27.0

_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [Intel-wired-lan] [PATCH net-next v3] iavf: Do not modify queue number when removing iavf driver
  2022-06-08  9:37 [Intel-wired-lan] [PATCH net-next v3] iavf: Do not modify queue number when removing iavf driver Jedrzej Jagielski
@ 2022-06-08 12:18 ` Jagielski, Jedrzej
  0 siblings, 0 replies; 2+ messages in thread
From: Jagielski, Jedrzej @ 2022-06-08 12:18 UTC (permalink / raw)
  To: intel-wired-lan

>If VF has configured tc qdisc with number of queues less than original set and then the driver went in removing process, tc resources are also releasing. Attempt of modify real num tx/rx in this state is causing call trace, because kernel is trying to release uninitialized queues
>
>Fix it by not modifying the number of queues when removing a driver
>
>Call Trace:
>  net_rx_queue_update_kobjects+0x10c/0x160
>  netdev_unregister_kobject+0x4b/0x80
>  rollback_registered_many+0x27b/0x550
>  rollback_registered+0x56/0x90
>  unregister_netdevice_queue+0x73/0xb0
>  unregister_netdev+0x18/0x20
>  iavf_remove+0x421/0x440 [iavf]
>  pci_device_remove+0x3b/0xc0
>  device_release_driver_internal+0x18c/0x250
>  driver_detach+0x39/0x6d
>  bus_remove_driver+0x77/0xc9
>  pci_unregister_driver+0x2d/0xb0
>  iavf_exit_module+0xc/0xb9a [iavf]
>  __x64_sys_delete_module+0x139/0x270
>  do_syscall_64+0x5b/0x1b0
>  entry_SYSCALL_64_after_hwframe+0x65/0xca
> RIP: 0033:0x7f6e29645a8b
> Code: 73 01 c3 48 8b 0d fd 03 2c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f
>       1f 84 00 00 00 00 00 90 f3 0f 1e fa b8 b0 00 00 00 0f 05 <48> 3d 01
>       f0 ff ff 73 01 c3 48 8b 0d cd 03 2c 00 f7 d8 64 89 01 48
> RSP: 002b:00007ffccf5b8098 EFLAGS: 00000206 ORIG_RAX: 00000000000000b0
> RAX: ffffffffffffffda RBX: 000055b5545f6c40 RCX: 00007f6e29645a8b
> RDX: 0000000000000000 RSI: 0000000000000800 RDI: 000055b5545f6ca8
> RBP: 000055b5545f6ca8 R08: 00007ffccf5b7041 R09: 0000000000000000
> R10: 00007f6e296b7f60 R11: 0000000000000206 R12: 0000000000000000
> R13: 0000000000000000 R14: 000055b5545f6ca8 R15: 00007ffccf5b9490
>
>Fixes: d5b33d024496 ("i40evf: add ndo_setup_tc callback to i40evf")
>Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
>Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
>---
Sent by mistake; wrong tree. Please ignore
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-06-08 12:18 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-08  9:37 [Intel-wired-lan] [PATCH net-next v3] iavf: Do not modify queue number when removing iavf driver Jedrzej Jagielski
2022-06-08 12:18 ` Jagielski, Jedrzej

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.