Commit 3a28daa9 authored by Li Jun's avatar Li Jun Committed by Huacai Chen
Browse files

LoongArch: Fix missing NULL checks for kstrdup()



1. Replace "of_find_node_by_path("/")" with "of_root" to avoid multiple
calls to "of_node_put()".

2. Fix a potential kernel oops during early boot when memory allocation
fails while parsing CPU model from device tree.

Cc: stable@vger.kernel.org
Signed-off-by: default avatarLi Jun <lijun01@kylinos.cn>
Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
parent c3692998
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -42,16 +42,15 @@ static int __init init_cpu_fullname(void)
	int cpu, ret;
	char *cpuname;
	const char *model;
	struct device_node *root;

	/* Parsing cpuname from DTS model property */
	root = of_find_node_by_path("/");
	ret = of_property_read_string(root, "model", &model);
	ret = of_property_read_string(of_root, "model", &model);
	if (ret == 0) {
		cpuname = kstrdup(model, GFP_KERNEL);
		if (!cpuname)
			return -ENOMEM;
		loongson_sysconf.cpuname = strsep(&cpuname, " ");
	}
	of_node_put(root);

	if (loongson_sysconf.cpuname && !strncmp(loongson_sysconf.cpuname, "Loongson", 8)) {
		for (cpu = 0; cpu < NR_CPUS; cpu++)