usb: hso: check for return value in hso_serial_common_create()
[ Upstream commit e911e99a07
]
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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
5.4-rM2-2.2.x-imx-squashed
parent
871b5a5a3b
commit
fd601f38f5
|
@ -2260,12 +2260,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;
|
||||||
|
@ -2310,6 +2312,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