diff options
author | Loic Poulain <loic.poulain@linaro.org> | 2021-02-18 18:09:06 +0100 |
---|---|---|
committer | Loic Poulain <loic.poulain@linaro.org> | 2021-03-05 13:40:53 +0100 |
commit | af9423075a2a7091e2b329fcaa2007853a3358c9 (patch) | |
tree | 2c0f16233421aa1ee2a0e9aed3eb2879af3e2ab7 | |
parent | b4a8cfad6645e3853ed99604bfaaf6612379cd42 (diff) |
mhi: uci: Fix buffer size
The buffer size for MHI transfer is currently amputated from it's last
bytes by the private buf info structure, fix that and submit full MTU
sized packets.
Signed-off-by: Loic Poulain <loic.poulain@linaro.org>
-rw-r--r-- | drivers/bus/mhi/uci.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/drivers/bus/mhi/uci.c b/drivers/bus/mhi/uci.c index def063e6d9b7..e08882a61b69 100644 --- a/drivers/bus/mhi/uci.c +++ b/drivers/bus/mhi/uci.c @@ -124,7 +124,6 @@ static int mhi_queue_inbound(struct uci_dev *udev) struct mhi_device *mhi_dev = udev->mhi_dev; struct device *dev = &mhi_dev->dev; int nr_desc, i, ret = -EIO; - size_t dl_buf_size; void *buf; struct uci_buf *ubuf; @@ -138,20 +137,18 @@ static int mhi_queue_inbound(struct uci_dev *udev) nr_desc = mhi_get_free_desc_count(mhi_dev, DMA_FROM_DEVICE); for (i = 0; i < nr_desc; i++) { - buf = kmalloc(udev->mtu, GFP_KERNEL); + buf = kmalloc(udev->mtu + sizeof(*ubuf), GFP_KERNEL); if (!buf) return -ENOMEM; - dl_buf_size = udev->mtu - sizeof(*ubuf); - /* save uci_buf info at the end of buf */ - ubuf = buf + dl_buf_size; + ubuf = buf + udev->mtu; ubuf->data = buf; dev_dbg(dev, "Allocated buf %d of %d size %zu\n", i, nr_desc, - dl_buf_size); + udev->mtu + sizeof(*ubuf)); - ret = mhi_queue_buf(mhi_dev, DMA_FROM_DEVICE, buf, dl_buf_size, + ret = mhi_queue_buf(mhi_dev, DMA_FROM_DEVICE, buf, udev->mtu, MHI_EOT); if (ret) { kfree(buf); |