usb: gadget: f_fs: Pass along set_halt errors.
authorJerry Zhang <zhangjerry@google.com>
Fri, 11 Aug 2017 22:46:08 +0000 (15:46 -0700)
committerFelipe Balbi <felipe.balbi@linux.intel.com>
Tue, 15 Aug 2017 11:18:59 +0000 (14:18 +0300)
Users can apply i/o in the wrong direction on an
endpoint to stall it. In case there is an error
that does not allow the endpoint to be stalled,
we want the user to know.

An operation to stall the endpoint will return
EBADMSG if successful, EAGAIN if there are still
queued requests, and other errors depending on
the underlying implementation.

Also remove the conditional since it is always true.

Acked-by: Michal Nazarewicz <mina86@mina86.com>
Signed-off-by: Jerry Zhang <zhangjerry@google.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
drivers/usb/gadget/function/f_fs.c

index d21874b35cf6eba0021ef3f66d97a9b226907f6f..9990944a724584c57603a489f411a81d17aef99b 100644 (file)
@@ -961,10 +961,9 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)
                /* In the meantime, endpoint got disabled or changed. */
                ret = -ESHUTDOWN;
        } else if (halt) {
-               /* Halt */
-               if (likely(epfile->ep == ep) && !WARN_ON(!ep->ep))
-                       usb_ep_set_halt(ep->ep);
-               ret = -EBADMSG;
+               ret = usb_ep_set_halt(ep->ep);
+               if (!ret)
+                       ret = -EBADMSG;
        } else if (unlikely(data_len == -EINVAL)) {
                /*
                 * Sanity Check: even though data_len can't be used