usb: gadget: f_fs: Limit the maximum length of data transferring 07/297607/1 accepted/tizen/unified/riscv/20230822.054229
authorDongwoo Lee <dwoo08.lee@samsung.com>
Mon, 21 Aug 2023 11:25:43 +0000 (20:25 +0900)
committerDongwoo Lee <dwoo08.lee@samsung.com>
Mon, 21 Aug 2023 11:34:25 +0000 (20:34 +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 3e59055..c6a52e7 100644 (file)
@@ -1013,6 +1013,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.