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();
|
||||
if (minor < 0)
|
||||
goto exit;
|
||||
goto exit2;
|
||||
|
||||
/* register our minor number */
|
||||
serial->parent->dev = tty_port_register_device_attr(&serial->port,
|
||||
tty_drv, minor, &serial->parent->interface->dev,
|
||||
serial->parent, hso_serial_dev_groups);
|
||||
if (IS_ERR(serial->parent->dev))
|
||||
goto exit2;
|
||||
|
||||
/* fill in specific data for later use */
|
||||
serial->minor = minor;
|
||||
|
@ -2310,6 +2312,7 @@ static int hso_serial_common_create(struct hso_serial *serial, int num_urbs,
|
|||
return 0;
|
||||
exit:
|
||||
hso_serial_tty_unregister(serial);
|
||||
exit2:
|
||||
hso_serial_common_free(serial);
|
||||
return -1;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue