mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 22:51:42 +00:00
V4L/DVB (3790): Use after free in drivers/media/video/em28xx/em28xx-video.c
In several places we use dev->devno right after we kfree() dev. This fixes coverity bug id #1065 Signed-off-by: Eric Sesterhenn <snakebyte@gmx.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
parent
b37492be25
commit
7c908fbb01
@ -1576,8 +1576,8 @@ static int em28xx_init_dev(struct em28xx **devhandle, struct usb_device *udev,
|
||||
errCode = em28xx_config(dev);
|
||||
if (errCode) {
|
||||
em28xx_errdev("error configuring device\n");
|
||||
kfree(dev);
|
||||
em28xx_devused&=~(1<<dev->devno);
|
||||
kfree(dev);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@ -1603,8 +1603,8 @@ static int em28xx_init_dev(struct em28xx **devhandle, struct usb_device *udev,
|
||||
dev->vdev = video_device_alloc();
|
||||
if (NULL == dev->vdev) {
|
||||
em28xx_errdev("cannot allocate video_device.\n");
|
||||
kfree(dev);
|
||||
em28xx_devused&=~(1<<dev->devno);
|
||||
kfree(dev);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@ -1612,8 +1612,8 @@ static int em28xx_init_dev(struct em28xx **devhandle, struct usb_device *udev,
|
||||
if (NULL == dev->vbi_dev) {
|
||||
em28xx_errdev("cannot allocate video_device.\n");
|
||||
kfree(dev->vdev);
|
||||
kfree(dev);
|
||||
em28xx_devused&=~(1<<dev->devno);
|
||||
kfree(dev);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@ -1650,8 +1650,8 @@ static int em28xx_init_dev(struct em28xx **devhandle, struct usb_device *udev,
|
||||
mutex_unlock(&dev->lock);
|
||||
list_del(&dev->devlist);
|
||||
video_device_release(dev->vdev);
|
||||
kfree(dev);
|
||||
em28xx_devused&=~(1<<dev->devno);
|
||||
kfree(dev);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
@ -1662,8 +1662,8 @@ static int em28xx_init_dev(struct em28xx **devhandle, struct usb_device *udev,
|
||||
list_del(&dev->devlist);
|
||||
video_device_release(dev->vbi_dev);
|
||||
video_device_release(dev->vdev);
|
||||
kfree(dev);
|
||||
em28xx_devused&=~(1<<dev->devno);
|
||||
kfree(dev);
|
||||
return -ENODEV;
|
||||
} else {
|
||||
printk("registered VBI\n");
|
||||
|
Loading…
Reference in New Issue
Block a user