mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 13:14:02 +02:00
usb: core: Strengthen error handling in hub_hub_status()
Add additional error handling after the call to get_hub_status() in hub_hub_status(). get_hub_status() uses usb_control_msg() which does not verify that the message is the correct length, substituting it for usb_control_msg_recv() would also solve this issue but increase memory allocations. Instead, error handling is copied from the method used in hub_ext_port_status(), which shares the same flow of logic as hub_hub_status(). Assisted-by: gkh_clanker_t1000 Signed-off-by: Griffin Kroah-Hartman <griffin@kroah.com> Link: https://patch.msgid.link/20260722-usb_core_patches_2-v3-1-87622252bfdd@kroah.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
913910ed36
commit
a29496745a
|
|
@ -994,10 +994,12 @@ static int hub_hub_status(struct usb_hub *hub,
|
|||
|
||||
mutex_lock(&hub->status_mutex);
|
||||
ret = get_hub_status(hub->hdev, &hub->status->hub);
|
||||
if (ret < 0) {
|
||||
if (ret < (int)sizeof(hub->status->hub)) {
|
||||
if (ret != -ENODEV)
|
||||
dev_err(hub->intfdev,
|
||||
"%s failed (err = %d)\n", __func__, ret);
|
||||
if (ret >= 0)
|
||||
ret = -EIO;
|
||||
} else {
|
||||
*status = le16_to_cpu(hub->status->hub.wHubStatus);
|
||||
*change = le16_to_cpu(hub->status->hub.wHubChange);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user