usb: gadget: f_fs: Limit the maximum length of data transferring
authorDongwoo Lee <dwoo08.lee@samsung.com>
Mon, 21 Aug 2023 11:25:43 +0000 (20:25 +0900)
committerJaehoon Chung <jh80.chung@samsung.com>
Mon, 19 Feb 2024 00:13:55 +0000 (09:13 +0900)
When the ffs daemons request transfer with large size buffer, the usb
subsystems below cannot filled the buffer at once and then the request
is stalled in f_fs_epfile_io function. In order to prevent this
situation, this limits maximum length of data as PAGE_SIZE.

Change-Id: Ib84b3493a56b21f33a07cf0533f8df71580b7540
Signed-off-by: Dongwoo Lee <dwoo08.lee@samsung.com>
drivers/usb/gadget/function/f_fs.c

index 6e9ef35..ebe7126 100644 (file)
@@ -1000,6 +1000,8 @@ static ssize_t ffs_epfile_io(struct file *file, struct ffs_io_data *io_data)
                        goto error_lock;
                }
                data_len = iov_iter_count(&io_data->data);
+               data_len = data_len > PAGE_SIZE ? PAGE_SIZE : data_len;
+
                /*
                 * Controller may require buffer size to be aligned to
                 * maxpacketsize of an out endpoint.