diff options
| -rw-r--r-- | drivers/usb/gadget/f_fs.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/usb/gadget/f_fs.c b/drivers/usb/gadget/f_fs.c index 306a2b52125c..2b4334394076 100644 --- a/drivers/usb/gadget/f_fs.c +++ b/drivers/usb/gadget/f_fs.c | |||
| @@ -585,7 +585,6 @@ static ssize_t ffs_epfile_io(struct file *file, | |||
| 585 | char __user *buf, size_t len, int read) | 585 | char __user *buf, size_t len, int read) |
| 586 | { | 586 | { |
| 587 | struct ffs_epfile *epfile = file->private_data; | 587 | struct ffs_epfile *epfile = file->private_data; |
| 588 | struct usb_gadget *gadget = epfile->ffs->gadget; | ||
| 589 | struct ffs_ep *ep; | 588 | struct ffs_ep *ep; |
| 590 | char *data = NULL; | 589 | char *data = NULL; |
| 591 | ssize_t ret, data_len; | 590 | ssize_t ret, data_len; |
| @@ -622,6 +621,12 @@ static ssize_t ffs_epfile_io(struct file *file, | |||
| 622 | /* Allocate & copy */ | 621 | /* Allocate & copy */ |
| 623 | if (!halt) { | 622 | if (!halt) { |
| 624 | /* | 623 | /* |
| 624 | * if we _do_ wait above, the epfile->ffs->gadget might be NULL | ||
| 625 | * before the waiting completes, so do not assign to 'gadget' earlier | ||
| 626 | */ | ||
| 627 | struct usb_gadget *gadget = epfile->ffs->gadget; | ||
| 628 | |||
| 629 | /* | ||
| 625 | * Controller may require buffer size to be aligned to | 630 | * Controller may require buffer size to be aligned to |
| 626 | * maxpacketsize of an out endpoint. | 631 | * maxpacketsize of an out endpoint. |
| 627 | */ | 632 | */ |
