usb: hso: check for return value in hso_serial_common_create()
in case of an error tty_register_device_attr() returns ERR_PTR(), add IS_ERR() check Reported-and-tested-by: syzbot+67b2bd0e34f952d0321e@syzkaller.appspotmail.com Link: https://syzkaller.appspot.com/bug?extid=67b2bd0e34f952d0321e Signed-off-by: Rustam Kovhaev <rkovhaev@gmail.com> Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7a9212d178
commit
e911e99a07
@ -2261,12 +2261,14 @@ static int hso_serial_common_create(struct hso_serial *serial, int num_urbs,
|
|||||||
|
|
||||||
minor = get_free_serial_index();
|
minor = get_free_serial_index();
|
||||||
if (minor < 0)
|
if (minor < 0)
|
||||||
goto exit;
|
goto exit2;
|
||||||
|
|
||||||
/* register our minor number */
|
/* register our minor number */
|
||||||
serial->parent->dev = tty_port_register_device_attr(&serial->port,
|
serial->parent->dev = tty_port_register_device_attr(&serial->port,
|
||||||
tty_drv, minor, &serial->parent->interface->dev,
|
tty_drv, minor, &serial->parent->interface->dev,
|
||||||
serial->parent, hso_serial_dev_groups);
|
serial->parent, hso_serial_dev_groups);
|
||||||
|
if (IS_ERR(serial->parent->dev))
|
||||||
|
goto exit2;
|
||||||
|
|
||||||
/* fill in specific data for later use */
|
/* fill in specific data for later use */
|
||||||
serial->minor = minor;
|
serial->minor = minor;
|
||||||
@ -2311,6 +2313,7 @@ static int hso_serial_common_create(struct hso_serial *serial, int num_urbs,
|
|||||||
return 0;
|
return 0;
|
||||||
exit:
|
exit:
|
||||||
hso_serial_tty_unregister(serial);
|
hso_serial_tty_unregister(serial);
|
||||||
|
exit2:
|
||||||
hso_serial_common_free(serial);
|
hso_serial_common_free(serial);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user