Re: [PATCH v2] drivers/base/node: fix UAF on device_register() failure
From: Danilo Krummrich
Date: Fri Aug 28 2026 - 14:07:29 EST
On Fri Aug 28, 2026 at 3:25 AM CEST, Linkai Gong wrote:
> diff --git a/drivers/base/node.c b/drivers/base/node.c
> index 3da91929ad4e..d5eec2ef76dd 100644
> --- a/drivers/base/node.c
> +++ b/drivers/base/node.c
> @@ -171,13 +171,14 @@ static struct node_access_nodes *node_init_node_access(struct node *node,
> goto free;
>
> if (device_register(dev))
> - goto free_name;
> + goto put_device;
>
> pm_runtime_no_callbacks(dev);
> list_add_tail(&access_node->list_node, &node->access_list);
> return access_node;
> -free_name:
> - kfree_const(dev->kobj.name);
> +put_device:
> + put_device(dev);
> + return NULL;
> free:
> kfree(access_node);
> return NULL;
Sorry I didn't notice this in the first version, but why do we keep the goto
labels at all if they both end with a return statement? Can't we just get rid of
both?
Thanks,
Danilo