diff --git a/drivers/usb/gadget/function/f_hid.c b/drivers/usb/gadget/function/f_hid.c index 3c6b43d06a6d1df6e280da404b7b17cb20d8270a..74a78cfd378c686881821f839d77395c92281fde 100644 --- a/drivers/usb/gadget/function/f_hid.c +++ b/drivers/usb/gadget/function/f_hid.c @@ -1605,6 +1605,11 @@ static struct usb_function *hidg_alloc(struct usb_function_instance *fi) opts = container_of(fi, struct f_hid_opts, func_inst); mutex_lock(&opts->lock); + if (!opts->report_length) { + mutex_unlock(&opts->lock); + kfree(hidg); + return ERR_PTR(-EINVAL); + } spin_lock_init(&hidg->write_spinlock); spin_lock_init(&hidg->read_spinlock);