diff --git a/drivers/usb/gadget/function/f_mtp.c b/drivers/usb/gadget/function/f_mtp.c index c1e915cc58fb..316c04ad5611 100644 --- a/drivers/usb/gadget/function/f_mtp.c +++ b/drivers/usb/gadget/function/f_mtp.c @@ -812,6 +812,11 @@ static void send_file_work(struct work_struct *data) offset = dev->xfer_file_offset; count = dev->xfer_file_length; + if (count < 0) { + dev->xfer_result = -EINVAL; + return; + } + mtp_log("(%lld %lld)\n", offset, count); if (dev->xfer_send_header) { @@ -926,6 +931,11 @@ static void receive_file_work(struct work_struct *data) offset = dev->xfer_file_offset; count = dev->xfer_file_length; + if (count < 0) { + dev->xfer_result = -EINVAL; + return; + } + mtp_log("(%lld)\n", count); if (!IS_ALIGNED(count, dev->ep_out->maxpacket)) mtp_log("- count(%lld) not multiple of mtu(%d)\n",