mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
media: cx23885: add ioremap return check and cleanup
Add a check for the return value of pci_ioremap_bar()
in cx23885_dev_setup().
If ioremap for BAR0 fails, release the already allocated
PCI memory region,
decrement the device count, and return -ENODEV.
This prevents a potential null pointer dereference and
ensures proper cleanup
on memory mapping failure.
Fixes: d19770e517 ("V4L/DVB (6150): Add CX23885/CX23887 PCIe bridge driver")
Cc: stable@vger.kernel.org
Signed-off-by: Wang Jun <1742789905@qq.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
This commit is contained in:
parent
a562d6dc86
commit
a0701e387b
|
|
@ -1002,8 +1002,12 @@ static int cx23885_dev_setup(struct cx23885_dev *dev)
|
|||
}
|
||||
|
||||
/* PCIe stuff */
|
||||
dev->lmmio = ioremap(pci_resource_start(dev->pci, 0),
|
||||
pci_resource_len(dev->pci, 0));
|
||||
dev->lmmio = pci_ioremap_bar(dev->pci, 0);
|
||||
if (!dev->lmmio) {
|
||||
dev_err(&dev->pci->dev, "CORE %s: can't ioremap MMIO memory\n",
|
||||
dev->name);
|
||||
goto err_release_region;
|
||||
}
|
||||
|
||||
dev->bmmio = (u8 __iomem *)dev->lmmio;
|
||||
|
||||
|
|
@ -1109,6 +1113,12 @@ static int cx23885_dev_setup(struct cx23885_dev *dev)
|
|||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err_release_region:
|
||||
release_mem_region(pci_resource_start(dev->pci, 0),
|
||||
pci_resource_len(dev->pci, 0));
|
||||
cx23885_devcount--;
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static void cx23885_dev_unregister(struct cx23885_dev *dev)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user