Commit 45c7eaeb authored by Jia-Ju Bai's avatar Jia-Ju Bai Committed by Daniel Lezcano
Browse files

thermal: thermal_of: Fix error return code of thermal_of_populate_bind_params()



When kcalloc() returns NULL to __tcbp or of_count_phandle_with_args()
returns zero or -ENOENT to count, no error return code of
thermal_of_populate_bind_params() is assigned.
To fix these bugs, ret is assigned with -ENOMEM and -ENOENT in these
cases, respectively.

Fixes: a92bab89 ("of: thermal: Allow multiple devices to share cooling map")
Reported-by: default avatarTOTE Robot <oslab@tsinghua.edu.cn>
Signed-off-by: default avatarJia-Ju Bai <baijiaju1990@gmail.com>
Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
Link: https://lore.kernel.org/r/20210310122423.3266-1-baijiaju1990@gmail.com
parent 7440e912
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -704,14 +704,17 @@ static int thermal_of_populate_bind_params(struct device_node *np,

	count = of_count_phandle_with_args(np, "cooling-device",
					   "#cooling-cells");
	if (!count) {
	if (count <= 0) {
		pr_err("Add a cooling_device property with at least one device\n");
		ret = -ENOENT;
		goto end;
	}

	__tcbp = kcalloc(count, sizeof(*__tcbp), GFP_KERNEL);
	if (!__tcbp)
	if (!__tcbp) {
		ret = -ENOMEM;
		goto end;
	}

	for (i = 0; i < count; i++) {
		ret = of_parse_phandle_with_args(np, "cooling-device",