[PATCH v2] Loongarch: env: fix missing NULL checks for kstrdup

Li Jun posted 1 patch 2 weeks, 4 days ago
There is a newer version of this series
arch/loongarch/kernel/env.c | 4 ++++
1 file changed, 4 insertions(+)
[PATCH v2] Loongarch: env: fix missing NULL checks for kstrdup
Posted by Li Jun 2 weeks, 4 days ago
Fixes potential kernel oops during early boot when memory
allocation fails while parsing CPU model from device tree.
before return -ENOMEM, of_node_put(root) first.

Signed-off-by: Li Jun <lijun01@kylinos.cn>
---
 arch/loongarch/kernel/env.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/arch/loongarch/kernel/env.c b/arch/loongarch/kernel/env.c
index 841206fde3ab..c586de80027c 100644
--- a/arch/loongarch/kernel/env.c
+++ b/arch/loongarch/kernel/env.c
@@ -49,6 +49,10 @@ static int __init init_cpu_fullname(void)
 	ret = of_property_read_string(root, "model", &model);
 	if (ret == 0) {
 		cpuname = kstrdup(model, GFP_KERNEL);
+		if (!cpuname) {
+			of_node_put(root);
+			return -ENOMEM;
+		}
 		loongson_sysconf.cpuname = strsep(&cpuname, " ");
 	}
 	of_node_put(root);
-- 
2.25.1
Re: [PATCH v2] Loongarch: env: fix missing NULL checks for kstrdup
Posted by Binbin Zhou 2 weeks, 4 days ago
Hi Jun:

On Thu, Mar 19, 2026 at 8:53 AM Li Jun <lijun01@kylinos.cn> wrote:
>
> Fixes potential kernel oops during early boot when memory
> allocation fails while parsing CPU model from device tree.
> before return -ENOMEM, of_node_put(root) first.
>
> Signed-off-by: Li Jun <lijun01@kylinos.cn>
> ---
>  arch/loongarch/kernel/env.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/arch/loongarch/kernel/env.c b/arch/loongarch/kernel/env.c
> index 841206fde3ab..c586de80027c 100644
> --- a/arch/loongarch/kernel/env.c
> +++ b/arch/loongarch/kernel/env.c
> @@ -49,6 +49,10 @@ static int __init init_cpu_fullname(void)
>         ret = of_property_read_string(root, "model", &model);
>         if (ret == 0) {
>                 cpuname = kstrdup(model, GFP_KERNEL);
> +               if (!cpuname) {
> +                       of_node_put(root);

Replacing `of_find_node_by_path(“/”)` with `of_root` avoids multiple
calls to `of_node_put()`.

> +                       return -ENOMEM;
> +               }
>                 loongson_sysconf.cpuname = strsep(&cpuname, " ");
>         }
>         of_node_put(root);
> --
> 2.25.1
>
>

-- 
Thanks.
Binbin