Re: [PATCH] usb: core: handle port status errors in disable_show()

Alan Stern <[email protected]>
Newsgroups org.kernel.vger.linux-usb,org.kernel.vger.linux-kernel
Message-ID <[email protected]>
On Sat, Aug 08, 2026 at 03:16:01PM +0200, Karl Mehltretter wrote:
> usb_hub_port_status() leaves its output arguments untouched when the
> status request fails. disable_show() nevertheless uses portstatus, so a
> sysfs read may report the wrong port state instead of an error.
> 
> Propagate the status request error.
> 
> Fixes: f061f43d7418c ("usb: hub: port: add sysfs entry to switch port power")
> Assisted-by: Claude:claude-fable-5
> Signed-off-by: Karl Mehltretter <[email protected]>
> ---
>  drivers/usb/core/port.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/core/port.c b/drivers/usb/core/port.c
> index b4452b665f591..0022473e526d7 100644
> --- a/drivers/usb/core/port.c
> +++ b/drivers/usb/core/port.c
> @@ -96,7 +96,9 @@ static ssize_t disable_show(struct device *dev,
>  		goto out_hdev_lock;
>  	}
>  
> -	usb_hub_port_status(hub, port1, &portstatus, &unused);
> +	rc = usb_hub_port_status(hub, port1, &portstatus, &unused);
> +	if (rc < 0)
> +		goto out_hdev_lock;
>  	disabled = !usb_port_is_power_on(hub, portstatus);
>  
>   out_hdev_lock:

It would be cleaner and simpler to do:

	if (rc >= 0)
		disabled = !usb_port_is_power_on(hub, portstatus);

Alan Stern
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.