Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6c74dada authored by Hans de Goede's avatar Hans de Goede Committed by Greg Kroah-Hartman
Browse files

usb-core: Make usb_free_streams return an error



The hcd-driver free_streams method can return an error, so lets properly
propagate that.

Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 37c3a3c4
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -2075,8 +2075,11 @@ EXPORT_SYMBOL_GPL(usb_alloc_streams);
 *
 * Reverts a group of bulk endpoints back to not using stream IDs.
 * Can fail if we are given bad arguments, or HCD is broken.
 *
 * Return: On success, the number of allocated streams. On failure, a negative
 * error code.
 */
void usb_free_streams(struct usb_interface *interface,
int usb_free_streams(struct usb_interface *interface,
		struct usb_host_endpoint **eps, unsigned int num_eps,
		gfp_t mem_flags)
{
@@ -2087,14 +2090,14 @@ void usb_free_streams(struct usb_interface *interface,
	dev = interface_to_usbdev(interface);
	hcd = bus_to_hcd(dev->bus);
	if (dev->speed != USB_SPEED_SUPER)
		return;
		return -EINVAL;

	/* Streams only apply to bulk endpoints. */
	for (i = 0; i < num_eps; i++)
		if (!eps[i] || !usb_endpoint_xfer_bulk(&eps[i]->desc))
			return;
			return -EINVAL;

	hcd->driver->free_streams(hcd, dev, eps, num_eps, mem_flags);
	return hcd->driver->free_streams(hcd, dev, eps, num_eps, mem_flags);
}
EXPORT_SYMBOL_GPL(usb_free_streams);

+1 −1
Original line number Diff line number Diff line
@@ -702,7 +702,7 @@ extern int usb_alloc_streams(struct usb_interface *interface,
		unsigned int num_streams, gfp_t mem_flags);

/* Reverts a group of bulk endpoints back to not using stream IDs. */
extern void usb_free_streams(struct usb_interface *interface,
extern int usb_free_streams(struct usb_interface *interface,
		struct usb_host_endpoint **eps, unsigned int num_eps,
		gfp_t mem_flags);