]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
mei: vsc: Unset the event callback on remove and probe errors
authorHans de Goede <hansg@kernel.org>
Mon, 23 Jun 2025 08:50:49 +0000 (10:50 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 24 Jun 2025 15:39:01 +0000 (16:39 +0100)
Make mei_vsc_remove() properly unset the callback to avoid a dead callback
sticking around after probe errors or unbinding of the platform driver.

Fixes: 386a766c4169 ("mei: Add MEI hardware support for IVSC device")
Signed-off-by: Hans de Goede <hansg@kernel.org>
Link: https://lore.kernel.org/r/20250623085052.12347-8-hansg@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/mei/platform-vsc.c

index 1ac85f0251c5f1f7f499fa9ccfe61f4f70f482a9..b2b5a20ae3fa487f8dd474ac04a3bebff193dfc7 100644 (file)
@@ -380,6 +380,8 @@ err_stop:
 err_cancel:
        mei_cancel_work(mei_dev);
 
+       vsc_tp_register_event_cb(tp, NULL, NULL);
+
        mei_disable_interrupts(mei_dev);
 
        return ret;
@@ -388,11 +390,14 @@ err_cancel:
 static void mei_vsc_remove(struct platform_device *pdev)
 {
        struct mei_device *mei_dev = platform_get_drvdata(pdev);
+       struct mei_vsc_hw *hw = mei_dev_to_vsc_hw(mei_dev);
 
        pm_runtime_disable(mei_dev->dev);
 
        mei_stop(mei_dev);
 
+       vsc_tp_register_event_cb(hw->tp, NULL, NULL);
+
        mei_disable_interrupts(mei_dev);
 
        mei_deregister(mei_dev);