summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMian Yousaf Kaukab <yousaf.kaukab@intel.com>2014-07-07 15:21:44 +0200
committerAjay Dudani <adudani@google.com>2017-07-16 19:58:10 -0700
commitde0a1b4ab4722f649bba5cae7383441d4cf8f790 (patch)
treec611d3659ea7c8784aaad74e98b9feff7ff6af2d
parentc0386db4edac26bd3c2fcb8767bb9a6fe5ea3147 (diff)
downloadtegra-android-tegra-dragon-3.18-oreo-r6.tar.gz
Bug: 63172680 Change-Id: I7cd33ca3ea7efd52bc72cce2c56a6622cd5f87fb Signed-off-by: Mian Yousaf Kaukab <yousaf.kaukab@intel.com> Signed-off-by: Ajay Dudani <adudani@google.com>
-rw-r--r--drivers/usb/gadget/function/f_accessory.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/usb/gadget/function/f_accessory.c b/drivers/usb/gadget/function/f_accessory.c
index 3384b5434f63..78f819d7edc6 100644
--- a/drivers/usb/gadget/function/f_accessory.c
+++ b/drivers/usb/gadget/function/f_accessory.c
@@ -613,6 +613,7 @@ static ssize_t acc_read(struct file *fp, char __user *buf,
ssize_t r = count;
unsigned xfer;
int ret = 0;
+ int aligned_count;
pr_debug("acc_read(%zu)\n", count);
@@ -621,8 +622,9 @@ static ssize_t acc_read(struct file *fp, char __user *buf,
return -ENODEV;
}
- if (count > BULK_BUFFER_SIZE)
- count = BULK_BUFFER_SIZE;
+ aligned_count = ALIGN(count, dev->ep_out->maxpacket);
+ if (aligned_count > BULK_BUFFER_SIZE)
+ aligned_count = BULK_BUFFER_SIZE;
/* we will block until we're online */
pr_debug("acc_read: waiting for online\n");
@@ -641,7 +643,7 @@ static ssize_t acc_read(struct file *fp, char __user *buf,
requeue_req:
/* queue a request */
req = dev->rx_req[0];
- req->length = count;
+ req->length = aligned_count;
dev->rx_done = 0;
ret = usb_ep_queue(dev->ep_out, req, GFP_KERNEL);
if (ret < 0) {