Re: [PATCH] usb: core: Strengthen error handling in hub_hub_status()
From: Oliver Neukum
Date: Tue Jul 14 2026 - 13:51:09 EST
On 14.07.26 18:32, Alan Stern wrote:
I am afraid I have to disagree. We would in effect say that get_hub_status()diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 5262e11c12cd..0d2166b8923a 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -991,10 +991,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 < sizeof(hub->status->hub)) {
if (ret != -ENODEV)
dev_err(hub->intfdev,
"%s failed (err = %d)\n", __func__, ret);
+ if (ret >= 0)
+ ret = -EIO;
It would be better to put these two lines above the preceding test.
That way it won't print confusing things like "hub_hub_status failed
(err = 2)".
has returned -EIO. That is simply not true.
Regards
Oliver