Skip to content

Commit 215ae61

Browse files
Uuuuuuhogregkh
authored andcommitted
drm/sysfb: ofdrm: fix PCI device reference leaks
[ Upstream commit 4aa8110 ] display_get_pci_dev_of() gets a referenced PCI device via pci_get_device(). Drop that reference when pci_enable_device() fails and release it during the managed teardown path after pci_disable_device(). Without that, ofdrm leaks the pci_dev reference on both the error path and the normal cleanup path. Fixes: c8a1775 ("drm/ofdrm: Add ofdrm for Open Firmware framebuffers") Co-developed-by: Myeonghun Pak <mhun512@gmail.com> Signed-off-by: Myeonghun Pak <mhun512@gmail.com> Co-developed-by: Ijae Kim <ae878000@gmail.com> Signed-off-by: Ijae Kim <ae878000@gmail.com> Co-developed-by: Taegyu Kim <tmk5904@psu.edu> Signed-off-by: Taegyu Kim <tmk5904@psu.edu> Signed-off-by: Yuho Choi <dbgh9129@gmail.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patch.msgid.link/20260420002513.216-1-dbgh9129@gmail.com Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent 7bf0784 commit 215ae61

1 file changed

Lines changed: 2 additions & 0 deletions

File tree

drivers/gpu/drm/tiny/ofdrm.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,7 @@ static void ofdrm_pci_release(void *data)
350350
struct pci_dev *pcidev = data;
351351

352352
pci_disable_device(pcidev);
353+
pci_dev_put(pcidev);
353354
}
354355

355356
static int ofdrm_device_init_pci(struct ofdrm_device *odev)
@@ -375,6 +376,7 @@ static int ofdrm_device_init_pci(struct ofdrm_device *odev)
375376
if (ret) {
376377
drm_err(dev, "pci_enable_device(%s) failed: %d\n",
377378
dev_name(&pcidev->dev), ret);
379+
pci_dev_put(pcidev);
378380
return ret;
379381
}
380382
ret = devm_add_action_or_reset(&pdev->dev, ofdrm_pci_release, pcidev);

0 commit comments

Comments
 (0)