IB/hfi1: Fix possible panic during hotplug remove
authorDouglas Miller <doug.miller@cornelisnetworks.com>
Wed, 2 Aug 2023 17:32:41 +0000 (13:32 -0400)
committerLeon Romanovsky <leon@kernel.org>
Thu, 3 Aug 2023 18:13:57 +0000 (21:13 +0300)
During hotplug remove it is possible that the update counters work
might be pending, and may run after memory has been freed.
Cancel the update counters work before freeing memory.

Fixes: 7724105686e7 ("IB/hfi1: add driver files")
Signed-off-by: Douglas Miller <doug.miller@cornelisnetworks.com>
Signed-off-by: Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>
Link: https://lore.kernel.org/r/169099756100.3927190.15284930454106475280.stgit@awfm-02.cornelisnetworks.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/hfi1/chip.c

index 9dbb89e9f4afc753a0a205ce8d1fed8acb43b258..baaa4406d5e60f464a2f95f5ba23467daa62b25f 100644 (file)
@@ -12307,6 +12307,7 @@ static void free_cntrs(struct hfi1_devdata *dd)
 
        if (dd->synth_stats_timer.function)
                del_timer_sync(&dd->synth_stats_timer);
+       cancel_work_sync(&dd->update_cntr_work);
        ppd = (struct hfi1_pportdata *)(dd + 1);
        for (i = 0; i < dd->num_pports; i++, ppd++) {
                kfree(ppd->cntrs);