Skip to content

Commit e812331

Browse files
ZheyuMamchehab
authored andcommitted
media: pci: cx23885: Fix the error handling in cx23885_initdev()
When the driver fails to call the dma_set_mask(), the driver will get the following splat: [ 55.853884] BUG: KASAN: use-after-free in __process_removed_driver+0x3c/0x240 [ 55.854486] Read of size 8 at addr ffff88810de60408 by task modprobe/590 [ 55.856822] Call Trace: [ 55.860327] __process_removed_driver+0x3c/0x240 [ 55.861347] bus_for_each_dev+0x102/0x160 [ 55.861681] i2c_del_driver+0x2f/0x50 This is because the driver has initialized the i2c related resources in cx23885_dev_setup() but not released them in error handling, fix this bug by modifying the error path that jumps after failing to call the dma_set_mask(). Signed-off-by: Zheyu Ma <zheyuma97@gmail.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
1 parent f83bd49 commit e812331

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

drivers/media/pci/cx23885/cx23885-core.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2165,15 +2165,15 @@ static int cx23885_initdev(struct pci_dev *pci_dev,
21652165
err = dma_set_mask(&pci_dev->dev, 0xffffffff);
21662166
if (err) {
21672167
pr_err("%s/0: Oops: no 32bit PCI DMA ???\n", dev->name);
2168-
goto fail_ctrl;
2168+
goto fail_dma_set_mask;
21692169
}
21702170

21712171
err = request_irq(pci_dev->irq, cx23885_irq,
21722172
IRQF_SHARED, dev->name, dev);
21732173
if (err < 0) {
21742174
pr_err("%s: can't get IRQ %d\n",
21752175
dev->name, pci_dev->irq);
2176-
goto fail_irq;
2176+
goto fail_dma_set_mask;
21772177
}
21782178

21792179
switch (dev->board) {
@@ -2195,7 +2195,7 @@ static int cx23885_initdev(struct pci_dev *pci_dev,
21952195

21962196
return 0;
21972197

2198-
fail_irq:
2198+
fail_dma_set_mask:
21992199
cx23885_dev_unregister(dev);
22002200
fail_ctrl:
22012201
v4l2_ctrl_handler_free(hdl);

0 commit comments

Comments
 (0)