ANDROID: usb: f_accessory: Check buffer size when initialised via composite
authorLee Jones <joneslee@google.com>
Wed, 18 Jan 2023 15:49:24 +0000 (15:49 +0000)
committerLee Jones <joneslee@google.com>
Mon, 23 Jan 2023 11:06:34 +0000 (11:06 +0000)
commit6e193ecd7a65f41aabc219c33deccd3152fde14c
treeb1c174ff9ad6f796d92bc8e4b9a434d6c89fcd61
parentdbe070cd3dcfc037a4281b307b80389191974d11
ANDROID: usb: f_accessory: Check buffer size when initialised via composite

When communicating with accessory devices via USBFS, the initialisation
call-stack looks like:

  ConfigFS > Gadget ConfigFS > UDC > Gadget ConfigFS > Composite

Eventually ending up in composite_dev_prepare() where memory for the
data buffer is allocated and initialised.  The default size used for the
allocation is USB_COMP_EP0_BUFSIZ (4k).  When handling bulk transfers,
acc_ctrlrequest() needs to be able to handle buffers up to
BULK_BUFFER_SIZE (16k).  Instead of adding new generic attributes to
'struct usb_request' to track the size of the allocated buffer, we can
simply split off the affected thread of execution to travel via a
knowledgeable abstracted function acc_ctrlrequest_composite() where we
can complete the necessary specific checks.

Bug: 264029575
Signed-off-by: Lee Jones <joneslee@google.com>
Change-Id: Ia1280f85499621d3fa57f7262b4a2c80f4be7773
Signed-off-by: Lee Jones <joneslee@google.com>
drivers/usb/gadget/configfs.c
drivers/usb/gadget/function/f_accessory.c