drm/xe: Skip calling drm_dev_put on probe error
authorMichał Winiarski <michal.winiarski@intel.com>
Wed, 29 Nov 2023 21:44:57 +0000 (22:44 +0100)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Thu, 21 Dec 2023 16:45:09 +0000 (11:45 -0500)
DRM device used by Xe is managed, which means that final ref will be
dropped on driver detach.

Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
Link: https://lore.kernel.org/r/20231129214509.1174116-2-michal.winiarski@intel.com
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/xe/xe_device.c
drivers/gpu/drm/xe/xe_pci.c

index 5420262..296260f 100644 (file)
@@ -215,11 +215,11 @@ struct xe_device *xe_device_create(struct pci_dev *pdev,
                              xe->drm.anon_inode->i_mapping,
                              xe->drm.vma_offset_manager, false, false);
        if (WARN_ON(err))
-               goto err_put;
+               goto err;
 
        err = drmm_add_action_or_reset(&xe->drm, xe_device_destroy, NULL);
        if (err)
-               goto err_put;
+               goto err;
 
        xe->info.devid = pdev->device;
        xe->info.revid = pdev->revision;
@@ -258,18 +258,16 @@ struct xe_device *xe_device_create(struct pci_dev *pdev,
        if (!xe->ordered_wq || !xe->unordered_wq) {
                drm_err(&xe->drm, "Failed to allocate xe workqueues\n");
                err = -ENOMEM;
-               goto err_put;
+               goto err;
        }
 
        err = xe_display_create(xe);
        if (WARN_ON(err))
-               goto err_put;
+               goto err;
 
        return xe;
 
-err_put:
-       drm_dev_put(&xe->drm);
-
+err:
        return ERR_PTR(err);
 }
 
index 1f3b2ce..a38fea2 100644 (file)
@@ -706,7 +706,7 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        pci_set_drvdata(pdev, xe);
        err = pci_enable_device(pdev);
        if (err)
-               goto err_drm_put;
+               return err;
 
        pci_set_master(pdev);
 
@@ -754,9 +754,6 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 err_pci_disable:
        pci_disable_device(pdev);
 
-err_drm_put:
-       drm_dev_put(&xe->drm);
-
        return err;
 }