You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A/A Bonding: Flush all the delayed works posted to rdmaip_wq before destroying the workq
Whenever a hardware port goes down, Resilient RDMAIP gets a NETDEV_CHANGE
event and a hardware port down event. Resilient RDMAIP processes such
events and does failback if needed (i.e moves the IP addresses from the
down port to the other active port in the group). Resilient RDMAIP module
schedules a failback task with a delay of 10 seconds to do IP migration.
If module is unloaded when a scheduled failback has not run to completion,
the system can crash. Current code calls flush_workqueue() and
destroy_workqueue() but none of these calls wait for the completion of
the delayed posted work to the workqueue.
task: ffff9fcf41f45f00 task.stack: ffffb8634c610000
RIP: 0010:__queue_work+0x80/0x3e0
RSP: 0018:ffff9feebfc03e40 EFLAGS: 00010046
Call Trace:
<IRQ>
? netif_schedule_queue+0x1c/0x1e
? execute_in_process_context+0x70/0x65
? execute_in_process_context+0x70/0x65
delayed_work_timer_fn+0x18/0x1a
call_timer_fn+0x3c/0x148
? execute_in_process_context+0x70/0x65
run_timer_softirq+0x18b/0x494
? timerqueue_add+0x59/0x82
? ktime_get+0x3e/0x95
__do_softirq+0xd9/0x28d
irq_exit+0xdf/0xe5
smp_apic_timer_interrupt+0x91/0x155
apic_timer_interrupt+0x1a2/0x1a7
</IRQ>
RIP: 0010:cpuidle_enter_state+0xda/0x2a5
The following changes are done to address the kernel crash.
1) List of delayed works (with delay > 0) are maintained in a new
linked list rdmaip_delayed_work_list. During module unload,
all these work requests are canceled before destroying the
workqueue.
2) Ensured that no new delayed works are posted when module unload is in
progress.
Orabug: 29379514
Signed-off-by: Sudhakar Dindukurti <[email protected]>
Reviewed-by: Zhu Yanjun <[email protected]>
Signed-off-by: Somasundaram Krishnasamy <[email protected]>
0 commit comments