[SLOF] [PATCH v2 2/5] usb: Increase amount of maximum slot IDs and add a sanity check

Nikunj A Dadhania nikunj at linux.vnet.ibm.com
Tue Aug 2 19:50:27 AEST 2016


Thomas Huth <thuth at redhat.com> writes:

> SLOF should be able to support more than just four devices on
> the four root hub ports. So we've got to increase the amount of
> possible slot IDs. Since QEMU supports up to 44 devices (four
> devices at the root ports + 5 tiers of hubs with 8 ports each),
> this seems to be a good new value instead. And to make sure that
> we do not accidentially get a buffer overflow when accessing the
> xhcd->xdevs[slot_id] array, this patch also add a sanity check at
> the beginning of the xhci_alloc_dev() function here.
>
> Signed-off-by: Thomas Huth <thuth at redhat.com>

Reviewed-by: Nikunj A Dadhania <nikunj at linux.vnet.ibm.com>

With one change below, i missed during my first review.

> ---
>  lib/libusb/usb-xhci.c | 6 ++++++
>  lib/libusb/usb-xhci.h | 2 +-
>  2 files changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/lib/libusb/usb-xhci.c b/lib/libusb/usb-xhci.c
> index b59fd40..eda5929 100644
> --- a/lib/libusb/usb-xhci.c
> +++ b/lib/libusb/usb-xhci.c
> @@ -539,6 +539,12 @@ static bool xhci_alloc_dev(struct xhci_hcd *xhcd, uint32_t slot_id, uint32_t por
>  	uint16_t max_packet;
>  	uint32_t newport;
>
> +	if (slot_id > XHCI_CONFIG_MAX_SLOT) {
> +		dprintf("USB3 slot ID %d is too high (max is %d)\n", slot_id,

This should be printf.

> +			XHCI_CONFIG_MAX_SLOT);
> +		return false;
> +	}
> +
>  	ctx_size = CTX_SIZE(xhcd->hcc_csz_64);
>  	xdev = &xhcd->xdevs[slot_id];
>  	xdev->slot_id = slot_id;
> diff --git a/lib/libusb/usb-xhci.h b/lib/libusb/usb-xhci.h
> index b02fcbf..793f18c 100644
> --- a/lib/libusb/usb-xhci.h
> +++ b/lib/libusb/usb-xhci.h
> @@ -126,7 +126,7 @@ struct xhci_op_regs {
>  #define XHCI_DCBAAP_MAX_SIZE      2048
>
>  	uint32_t config;         /* Configure */
> -#define XHCI_CONFIG_MAX_SLOT      4
> +#define XHCI_CONFIG_MAX_SLOT      44
>
>  	uint8_t reserved2[964]; /* 3C - 3FF */
>  	/* USB Port register set */
> -- 
> 1.8.3.1



More information about the SLOF mailing list