mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 02:21:52 +09:00
media: dvb: usb: fix use after free in dvb_usb_device_exit
[ Upstream commit 6cf97230cd ]
dvb_usb_device_exit() frees and uses the device name in that order.
Fix by storing the name in a buffer before freeing it.
Signed-off-by: Oliver Neukum <oneukum@suse.com>
Reported-by: syzbot+26ec41e9f788b3eba396@syzkaller.appspotmail.com
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
3f32d46cc2
commit
2b97c19468
@@ -287,12 +287,15 @@ EXPORT_SYMBOL(dvb_usb_device_init);
|
||||
void dvb_usb_device_exit(struct usb_interface *intf)
|
||||
{
|
||||
struct dvb_usb_device *d = usb_get_intfdata(intf);
|
||||
const char *name = "generic DVB-USB module";
|
||||
const char *default_name = "generic DVB-USB module";
|
||||
char name[40];
|
||||
|
||||
usb_set_intfdata(intf, NULL);
|
||||
if (d != NULL && d->desc != NULL) {
|
||||
name = d->desc->name;
|
||||
strscpy(name, d->desc->name, sizeof(name));
|
||||
dvb_usb_exit(d);
|
||||
} else {
|
||||
strscpy(name, default_name, sizeof(name));
|
||||
}
|
||||
info("%s successfully deinitialized and disconnected.", name);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user