]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mei: txe: fix initialization order
authorAlexander Usyskin <alexander.usyskin@intel.com>
Sun, 19 Oct 2025 07:36:59 +0000 (10:36 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 22 Oct 2025 06:03:57 +0000 (08:03 +0200)
The mei_register() should move before the mei_start() for hook
on class device to work.
Same change was implemented in mei-me, missed from mei-txe.

Fixes: 7704e6be4ed2 ("mei: hook mei_device on class device")
Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
Link: https://patch.msgid.link/20251019073659.2646791-1-alexander.usyskin@intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/mei/pci-txe.c

index c9eb5c5393e45b338ff85e71baa22bdbd907c0ee..06b55a891c6bb4dae781aec0534fdad4f5edb238 100644 (file)
@@ -109,19 +109,19 @@ static int mei_txe_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
                goto end;
        }
 
+       err = mei_register(dev, &pdev->dev);
+       if (err)
+               goto release_irq;
+
        if (mei_start(dev)) {
                dev_err(&pdev->dev, "init hw failure.\n");
                err = -ENODEV;
-               goto release_irq;
+               goto deregister;
        }
 
        pm_runtime_set_autosuspend_delay(&pdev->dev, MEI_TXI_RPM_TIMEOUT);
        pm_runtime_use_autosuspend(&pdev->dev);
 
-       err = mei_register(dev, &pdev->dev);
-       if (err)
-               goto stop;
-
        pci_set_drvdata(pdev, dev);
 
        /*
@@ -144,8 +144,8 @@ static int mei_txe_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 
        return 0;
 
-stop:
-       mei_stop(dev);
+deregister:
+       mei_deregister(dev);
 release_irq:
        mei_cancel_work(dev);
        mei_disable_interrupts(dev);