diff options
author | Mian Yousaf Kaukab <yousaf.kaukab@intel.com> | 2014-07-07 15:21:44 +0200 |
---|---|---|
committer | Ajay Dudani <adudani@google.com> | 2017-07-16 19:58:10 -0700 |
commit | de0a1b4ab4722f649bba5cae7383441d4cf8f790 (patch) | |
tree | c611d3659ea7c8784aaad74e98b9feff7ff6af2d | |
parent | c0386db4edac26bd3c2fcb8767bb9a6fe5ea3147 (diff) | |
download | tegra-android-tegra-dragon-3.18-oreo-r6.tar.gz |
usb: gadget: accessory: align read length to maxpandroid-o-preview-4_r0.1android-8.0.0_r0.1android-tegra-dragon-3.18-oreo-r6android-tegra-dragon-3.18-o-preview-4
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.c | 8 |
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) { |