diff options
-rw-r--r-- | drivers/usb/gadget/f_fs.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/usb/gadget/f_fs.c b/drivers/usb/gadget/f_fs.c index 1499f9e4afa8..19fffccc370d 100644 --- a/drivers/usb/gadget/f_fs.c +++ b/drivers/usb/gadget/f_fs.c | |||
@@ -368,6 +368,14 @@ static int __ffs_ep0_queue_wait(struct ffs_data *ffs, char *data, size_t len) | |||
368 | req->buf = data; | 368 | req->buf = data; |
369 | req->length = len; | 369 | req->length = len; |
370 | 370 | ||
371 | /* | ||
372 | * UDC layer requires to provide a buffer even for ZLP, but should | ||
373 | * not use it at all. Let's provide some poisoned pointer to catch | ||
374 | * possible bug in the driver. | ||
375 | */ | ||
376 | if (req->buf == NULL) | ||
377 | req->buf = (void *)0xDEADBABE; | ||
378 | |||
371 | INIT_COMPLETION(ffs->ep0req_completion); | 379 | INIT_COMPLETION(ffs->ep0req_completion); |
372 | 380 | ||
373 | ret = usb_ep_queue(ffs->gadget->ep0, req, GFP_ATOMIC); | 381 | ret = usb_ep_queue(ffs->gadget->ep0, req, GFP_ATOMIC); |