
On 17 June 2015 at 13:33, Hans de Goede hdegoede@redhat.com wrote:
last_child was abused by the old usb code to first store 1 if the usb_device was not the root of the usb tree, and then later on re-used to store whether or not the usb_device is actually the last child.
The dm-usb code was always setting it to actually reflect the last-child status which is wrong for the last child leading to output like this:
USB device tree: 1 Hub (12 Mb/s, 100mA) | ALCOR USB Hub 2.0 | | 2 Mass Storage (12 Mb/s, 100mA) | USB Flash Disk 4C0E960F | +-3 Human Interface (1.5 Mb/s, 100mA) SINO WEALTH USB Composite Device
Instead of this:
USB device tree: 1 Hub (12 Mb/s, 100mA) | ALCOR USB Hub 2.0 | +-2 Mass Storage (12 Mb/s, 100mA) | USB Flash Disk 4C0E960F | +-3 Human Interface (1.5 Mb/s, 100mA) SINO WEALTH USB Composite Device
This commit fixes this by first checking that the device is not root, and then setting last_child. This commit also updates the old code to not abuse the last_child variable to store the root check result.
Signed-off-by: Hans de Goede hdegoede@redhat.com
common/cmd_usb.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
Acked-by: Simon Glass sjg@chromium.org