From 3cbb89d1a4ffe1a4449090ca769f2ce575e9d2c1 Mon Sep 17 00:00:00 2001 From: Mayank Rana Date: Fri, 26 Jun 2015 14:43:21 -0700 Subject: usb: u_data_bridge: Return error when no USB TX request available In some cases, it has been observed that all USB TX requests are queued with USB controller and port bridge is trying to write data. gbridge_port_write() API is returning zero (success of data) instead of error code which results into data loss. Hence return -EAGAIN when there is no USB TX request available. Also mark this error as non-fatal by using pr_debug() here. Change-Id: Id56788b372b62a005448a729e5f00de6fb895e47 Signed-off-by: Mayank Rana --- drivers/usb/gadget/function/u_data_bridge.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/usb/gadget/function/u_data_bridge.c b/drivers/usb/gadget/function/u_data_bridge.c index c4ef3e84edea..6d3c60d7ea70 100644 --- a/drivers/usb/gadget/function/u_data_bridge.c +++ b/drivers/usb/gadget/function/u_data_bridge.c @@ -451,8 +451,8 @@ ssize_t gbridge_port_write(struct file *file, if (list_empty(&port->write_pool)) { spin_unlock_irqrestore(&port->port_lock, flags); - pr_err("%s: Request list is empty.\n", __func__); - return 0; + pr_debug("%s: Request list is empty.\n", __func__); + return -EAGAIN; } pool = &port->write_pool; req = list_first_entry(pool, struct usb_request, list); -- cgit v1.2.3