diff mbox series

Subject: [PATCH] usb: gadget: aspeed: Add NULL check in the ast_vhub_init_dev

Message ID 20250329002911.132826-1-bsdhenrymartin@gmail.com (mailing list archive)
State New
Headers show
Series Subject: [PATCH] usb: gadget: aspeed: Add NULL check in the ast_vhub_init_dev | expand

Commit Message

Henry Martin March 29, 2025, 12:29 a.m. UTC
When devm_kasprintf() fails, it returns a NULL pointer. However, this return value is not properly checked in the function ast_vhub_init_dev.

A NULL check should be added after the devm_kasprintf call to prevent potential NULL pointer dereference error.

Fixes: 7ecca2a4080cb ("usb/gadget: Add driver for Aspeed SoC virtual hub")
Signed-off-by: Henry Martin <bsdhenrymartin@gmail.com>
---
 drivers/usb/gadget/udc/aspeed-vhub/dev.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Benjamin Herrenschmidt April 1, 2025, 3:47 a.m. UTC | #1
On Sat, 2025-03-29 at 08:29 +0800, Henry Martin wrote:
> When devm_kasprintf() fails, it returns a NULL pointer. However, this
> return value is not properly checked in the function
> ast_vhub_init_dev.
> 
> A NULL check should be added after the devm_kasprintf call to prevent
> potential NULL pointer dereference error.
> 
> Fixes: 7ecca2a4080cb ("usb/gadget: Add driver for Aspeed SoC virtual
> hub")
> Signed-off-by: Henry Martin <bsdhenrymartin@gmail.com>

Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

> ---
>  drivers/usb/gadget/udc/aspeed-vhub/dev.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/gadget/udc/aspeed-vhub/dev.c
> b/drivers/usb/gadget/udc/aspeed-vhub/dev.c
> index 573109ca5b79..1709a58299a5 100644
> --- a/drivers/usb/gadget/udc/aspeed-vhub/dev.c
> +++ b/drivers/usb/gadget/udc/aspeed-vhub/dev.c
> @@ -545,9 +545,11 @@ int ast_vhub_init_dev(struct ast_vhub *vhub,
> unsigned int idx)
>  	struct device *parent = &vhub->pdev->dev;
>  	int rc;
>  
> +	d->name = devm_kasprintf(parent, GFP_KERNEL, "port%d", idx +
> 1);
> +	if (!d->name)
> +		return -ENOMEM;
>  	d->vhub = vhub;
>  	d->index = idx;
> -	d->name = devm_kasprintf(parent, GFP_KERNEL, "port%d",
> idx+1);
>  	d->regs = vhub->regs + 0x100 + 0x10 * idx;
>  
>  	ast_vhub_init_ep0(vhub, &d->ep0, d);
diff mbox series

Patch

diff --git a/drivers/usb/gadget/udc/aspeed-vhub/dev.c b/drivers/usb/gadget/udc/aspeed-vhub/dev.c
index 573109ca5b79..1709a58299a5 100644
--- a/drivers/usb/gadget/udc/aspeed-vhub/dev.c
+++ b/drivers/usb/gadget/udc/aspeed-vhub/dev.c
@@ -545,9 +545,11 @@  int ast_vhub_init_dev(struct ast_vhub *vhub, unsigned int idx)
 	struct device *parent = &vhub->pdev->dev;
 	int rc;
 
+	d->name = devm_kasprintf(parent, GFP_KERNEL, "port%d", idx + 1);
+	if (!d->name)
+		return -ENOMEM;
 	d->vhub = vhub;
 	d->index = idx;
-	d->name = devm_kasprintf(parent, GFP_KERNEL, "port%d", idx+1);
 	d->regs = vhub->regs + 0x100 + 0x10 * idx;
 
 	ast_vhub_init_ep0(vhub, &d->ep0, d);