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

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
...@@ -2075,8 +2075,11 @@ EXPORT_SYMBOL_GPL(usb_alloc_streams); ...@@ -2075,8 +2075,11 @@ EXPORT_SYMBOL_GPL(usb_alloc_streams);
* *
* Reverts a group of bulk endpoints back to not using stream IDs. * Reverts a group of bulk endpoints back to not using stream IDs.
* Can fail if we are given bad arguments, or HCD is broken. * 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, struct usb_host_endpoint **eps, unsigned int num_eps,
gfp_t mem_flags) gfp_t mem_flags)
{ {
...@@ -2087,14 +2090,14 @@ void usb_free_streams(struct usb_interface *interface, ...@@ -2087,14 +2090,14 @@ void usb_free_streams(struct usb_interface *interface,
dev = interface_to_usbdev(interface); dev = interface_to_usbdev(interface);
hcd = bus_to_hcd(dev->bus); hcd = bus_to_hcd(dev->bus);
if (dev->speed != USB_SPEED_SUPER) if (dev->speed != USB_SPEED_SUPER)
return; return -EINVAL;
/* Streams only apply to bulk endpoints. */ /* Streams only apply to bulk endpoints. */
for (i = 0; i < num_eps; i++) for (i = 0; i < num_eps; i++)
if (!eps[i] || !usb_endpoint_xfer_bulk(&eps[i]->desc)) 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); EXPORT_SYMBOL_GPL(usb_free_streams);
......
...@@ -702,7 +702,7 @@ extern int usb_alloc_streams(struct usb_interface *interface, ...@@ -702,7 +702,7 @@ extern int usb_alloc_streams(struct usb_interface *interface,
unsigned int num_streams, gfp_t mem_flags); unsigned int num_streams, gfp_t mem_flags);
/* Reverts a group of bulk endpoints back to not using stream IDs. */ /* 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, struct usb_host_endpoint **eps, unsigned int num_eps,
gfp_t mem_flags); gfp_t mem_flags);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment