]> www.infradead.org Git - users/dwmw2/linux.git/commit
ionic: no double destroy workqueue
authorShannon Nelson <shannon.nelson@amd.com>
Thu, 12 Dec 2024 21:31:56 +0000 (13:31 -0800)
committerJakub Kicinski <kuba@kernel.org>
Sun, 15 Dec 2024 22:33:31 +0000 (14:33 -0800)
commit746e6ae2e202b062b9deee7bd86d94937997ecd7
treed3858a13a3b8938f02a0b7404ae01a31805e5301
parent9590d32e090ea2751e131ae5273859ca22f5ac14
ionic: no double destroy workqueue

There are some FW error handling paths that can cause us to
try to destroy the workqueue more than once, so let's be sure
we're checking for that.

The case where this popped up was in an AER event where the
handlers got called in such a way that ionic_reset_prepare()
and thus ionic_dev_teardown() got called twice in a row.
The second time through the workqueue was already destroyed,
and destroy_workqueue() choked on the bad wq pointer.

We didn't hit this in AER handler testing before because at
that time we weren't using a private workqueue.  Later we
replaced the use of the system workqueue with our own private
workqueue but hadn't rerun the AER handler testing since then.

Fixes: 9e25450da700 ("ionic: add private workqueue per-device")
Signed-off-by: Shannon Nelson <shannon.nelson@amd.com>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Link: https://patch.msgid.link/20241212213157.12212-3-shannon.nelson@amd.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/pensando/ionic/ionic_dev.c