]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
fbdev: offb: fix PCI device reference leak on probe failure
authorYuho Choi <dbgh9129@gmail.com>
Mon, 20 Apr 2026 01:01:18 +0000 (21:01 -0400)
committerHelge Deller <deller@gmx.de>
Wed, 22 Apr 2026 13:45:38 +0000 (15:45 +0200)
offb_init_nodriver() gets a referenced PCI device with pci_get_device().
If pci_enable_device() fails, the function returns without dropping that
reference.

Release the PCI device reference before returning from the
pci_enable_device() failure path.

Fixes: 5bda8f7b5468 ("video: fbdev: offb: Call pci_enable_device() before using the PCI VGA device")
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>
Signed-off-by: Helge Deller <deller@gmx.de>
drivers/video/fbdev/offb.c

index f85428e13996baf473c14fc4114a7cb90a45d6c9..166b2dff36f59e20c3bee9d2eef15da892842758 100644 (file)
@@ -640,8 +640,13 @@ static void offb_init_nodriver(struct platform_device *parent, struct device_nod
                        vid = be32_to_cpup(vidp);
                        did = be32_to_cpup(didp);
                        pdev = pci_get_device(vid, did, NULL);
-                       if (!pdev || pci_enable_device(pdev))
+                       if (!pdev)
                                return;
+
+                       if (pci_enable_device(pdev)) {
+                               pci_dev_put(pdev);
+                               return;
+                       }
                }
 #endif
                /* kludge for valkyrie */