Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 76f7005a authored by Manu Gautam's avatar Manu Gautam
Browse files

USB: f_mtp: Avoid queuing of receive_file_work for 0 length



MTP Server can issue ioctl for receive_file_work even if
xfer_length is 0. Mainly due to small files which are read
from mtp_read() itself. As there is no need to queue work
followed by flush_work in that case, add a check for same
to avoid wasting few msecs for every small file transferred.

Change-Id: I7b5395cc771c6f1ef842e787210ec02262b2b44f
Signed-off-by: default avatarManu Gautam <mgautam@codeaurora.org>
parent d66d368d
Loading
Loading
Loading
Loading
+10 −7
Original line number Diff line number Diff line
@@ -1116,14 +1116,17 @@ static long mtp_send_receive_ioctl(struct file *fp, unsigned int code,
	 * in kernel context, which is necessary for vfs_read and
	 * vfs_write to use our buffers in the kernel address space.
	 */
	dev->xfer_result = 0;
	if (dev->xfer_file_length) {
		queue_work(dev->wq, work);
		/* wait for operation to complete */
		flush_workqueue(dev->wq);
	fput(filp);

		/* read the result */
		smp_rmb();
	}
	ret = dev->xfer_result;
	fput(filp);

fail:
	spin_lock_irq(&dev->lock);