kernel/usb4bsd: Apply FreeBSD r277417
authorMarkus Pfeiffer <markus.pfeiffer@morphism.de>
Sun, 22 Feb 2015 01:05:00 +0000 (01:05 +0000)
committerMarkus Pfeiffer <markus.pfeiffer@morphism.de>
Sun, 22 Feb 2015 01:05:00 +0000 (01:05 +0000)
Fix returned data for the USB_GET_DEV_PORT_PATH IOCTL in particular
the value returned in the "udp_port_level" field.

sys/bus/u4b/usb_generic.c

index 9457271..798b3f8 100644 (file)
@@ -1,4 +1,4 @@
-/* $FreeBSD: head/sys/dev/usb/usb_generic.c 267992 2014-06-28 03:56:17Z hselasky $ */
+/* $FreeBSD: head/sys/dev/usb/usb_generic.c 277417 2015-01-20 11:43:16Z hselasky $ */
 /*-
  * Copyright (c) 2008 Hans Petter Selasky. All rights reserved.
  *
@@ -1846,14 +1846,13 @@ ugen_get_port_path(struct usb_fifo *f, struct usb_device_port_path *dpp)
        if (nlevel > USB_DEVICE_PORT_PATH_MAX)
                goto error;
 
+       /* store total level of ports */
+       dpp->udp_port_level = nlevel;
+
        /* store port index array */
        next = udev;
        while (next->parent_hub != NULL) {
-               nlevel--;
-
-               dpp->udp_port_no[nlevel] = next->port_no;
-               dpp->udp_port_level = nlevel;
-
+               dpp->udp_port_no[--nlevel] = next->port_no;
                next = next->parent_hub;
        }
        return (0);     /* success */