RDMA/bnxt_re: Fix system crash during load/unload
During driver unload, the driver proceeds with cleanup without waiting for the scheduled events. So the device pointers get freed up and driver crashes when the events are scheduled later. Flush the bnxt_re_task work queue before starting device removal. Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
3b921e3bc4
commit
dcdaba0806
|
@ -1578,6 +1578,11 @@ static void __exit bnxt_re_mod_exit(void)
|
||||||
*/
|
*/
|
||||||
list_for_each_entry_safe_reverse(rdev, next, &to_be_deleted, list) {
|
list_for_each_entry_safe_reverse(rdev, next, &to_be_deleted, list) {
|
||||||
dev_info(rdev_to_dev(rdev), "Unregistering Device");
|
dev_info(rdev_to_dev(rdev), "Unregistering Device");
|
||||||
|
/*
|
||||||
|
* Flush out any scheduled tasks before destroying the
|
||||||
|
* resources
|
||||||
|
*/
|
||||||
|
flush_workqueue(bnxt_re_wq);
|
||||||
bnxt_re_dev_stop(rdev);
|
bnxt_re_dev_stop(rdev);
|
||||||
bnxt_re_ib_unreg(rdev, true);
|
bnxt_re_ib_unreg(rdev, true);
|
||||||
bnxt_re_remove_one(rdev);
|
bnxt_re_remove_one(rdev);
|
||||||
|
|
Loading…
Reference in New Issue