Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/sysfb: ofdrm: fix PCI device reference leaks

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: c8a17756c425 ("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

authored by

Yuho Choi and committed by
Thomas Zimmermann
4aa81100 3d4c2268

+2
+2
drivers/gpu/drm/sysfb/ofdrm.c
··· 350 350 struct pci_dev *pcidev = data; 351 351 352 352 pci_disable_device(pcidev); 353 + pci_dev_put(pcidev); 353 354 } 354 355 355 356 static int ofdrm_device_init_pci(struct ofdrm_device *odev) ··· 376 375 if (ret) { 377 376 drm_err(dev, "pci_enable_device(%s) failed: %d\n", 378 377 dev_name(&pcidev->dev), ret); 378 + pci_dev_put(pcidev); 379 379 return ret; 380 380 } 381 381 ret = devm_add_action_or_reset(&pdev->dev, ofdrm_pci_release, pcidev);