Re: [PATCH] USB: dummy-hcd: Fix uninitialized array use in init()

From: Alan Stern
Date: Fri Dec 04 2020 - 11:13:44 EST


On Fri, Dec 04, 2020 at 06:24:49AM +0000, Bui Quang Minh wrote:
> This error path
>
> err_add_pdata:
> for (i = 0; i < mod_data.num; i++)
> kfree(dum[i]);
>
> can be triggered when not all dum's elements are initialized.
>
> Fix this by initializing all dum's elements to NULL.
>
> Signed-off-by: Bui Quang Minh <minhquangbui99@xxxxxxxxx>
> ---
> drivers/usb/gadget/udc/dummy_hcd.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/gadget/udc/dummy_hcd.c b/drivers/usb/gadget/udc/dummy_hcd.c
> index 0eeaead..a2cf009 100644
> --- a/drivers/usb/gadget/udc/dummy_hcd.c
> +++ b/drivers/usb/gadget/udc/dummy_hcd.c
> @@ -2734,7 +2734,7 @@ static int __init init(void)
> {
> int retval = -ENOMEM;
> int i;
> - struct dummy *dum[MAX_NUM_UDC];
> + struct dummy *dum[MAX_NUM_UDC] = {};
>
> if (usb_disabled())
> return -ENODEV;

Acked-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>

Does this initialization end up using less memory than an explicit
memset() call?

Alan Stern