[U-Boot] [UBOOT] [PATCH] cmd: usb: ignore block devices under mass storage device
Simon Glass
sjg at chromium.org
Sun Aug 13 21:37:00 UTC 2017
Hi Suneel,
On 10 August 2017 at 23:53, Suneel Garapati <suneelglinux at gmail.com> wrote:
> usb tree and info commands may cause crash otherwise
>
> Signed-off-by: Suneel Garapati <suneelglinux at gmail.com>
> ---
> cmd/usb.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
Thank you for the patch - it certainly looks like a bug. Can you
please expand the commit message a little? E.g. you have
UCLASS_USB_EMUL below.
> diff --git a/cmd/usb.c b/cmd/usb.c
> index 992d414..81e1a7b 100644
> --- a/cmd/usb.c
> +++ b/cmd/usb.c
> @@ -415,7 +415,8 @@ static void usb_show_tree_graph(struct usb_device *dev, char *pre)
> udev = dev_get_parent_priv(child);
>
> /* Ignore emulators, we only want real devices */
> - if (device_get_uclass_id(child) != UCLASS_USB_EMUL) {
> + if (device_get_uclass_id(child) !=
> + (UCLASS_USB_EMUL | UCLASS_BLK)) {
This seems odd to me. Do you mean to check that the child uclass is
neither USB_EMUL nor BLK?
Would it be possible to check that the parent is UCLASS_USB? That
seems like a better condition to determine whether the child has USB
parent data.
> usb_show_tree_graph(udev, pre);
> pre[index] = 0;
> }
> @@ -605,7 +606,8 @@ static void usb_show_info(struct usb_device *udev)
> for (device_find_first_child(udev->dev, &child);
> child;
> device_find_next_child(&child)) {
> - if (device_active(child)) {
> + if (device_active(child) &&
> + (device_get_uclass_id(child) != UCLASS_BLK)) {
> udev = dev_get_parent_priv(child);
> usb_show_info(udev);
> }
> --
> 2.7.4
>
Regards,
Simon
More information about the U-Boot
mailing list