Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 25e057fd authored by Takeshi Yoshimura's avatar Takeshi Yoshimura Committed by Mauro Carvalho Chehab
Browse files

[media] ddbridge: Do not free_irq() if request_irq() failed



My static checker detected that free_irq() is called even after
request_irq() failed in ddb_probe(). In this case, the kernel may try to
free dev->pdev->irq although the IRQ is not assigned. This event rarely
occurs, but always introduces a warning if it happens.

"goto fail1" always results in disabling enabled MSI and releasing a
requested IRQ. It seems like the former handling is necessary. So I added
a conditional branch before the free_irq() (stat == 0 means request_irq()
succeeds).

Signed-off-by: default avatarTakeshi Yoshimura <yos@sslab.ics.keio.ac.jp>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent ee8defec
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1630,6 +1630,7 @@ static int ddb_probe(struct pci_dev *pdev, const struct pci_device_id *id)
	printk(KERN_ERR "fail1\n");
	if (dev->msi)
		pci_disable_msi(dev->pdev);
	if (stat == 0)
		free_irq(dev->pdev->irq, dev);
fail:
	printk(KERN_ERR "fail\n");