Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c7c1b311 authored by Wei Yongjun's avatar Wei Yongjun Committed by Zhang Rui
Browse files

Thermal: x86_pkg_temp: fix krealloc() misuse in in pkg_temp_thermal_device_add()



If krealloc() returns NULL, it doesn't free the original. So any code
of the form 'foo = krealloc(foo, ...);' is almost certainly a bug.

Signed-off-by: default avatarWei Yongjun <yongjun_wei@trendmicro.com.cn>
Signed-off-by: default avatarZhang Rui <rui.zhang@intel.com>
parent f3ed0a17
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -394,6 +394,7 @@ static int pkg_temp_thermal_device_add(unsigned int cpu)
	char buffer[30];
	int thres_count;
	u32 eax, ebx, ecx, edx;
	u8 *temp;

	cpuid(6, &eax, &ebx, &ecx, &edx);
	thres_count = ebx & 0x07;
@@ -417,13 +418,14 @@ static int pkg_temp_thermal_device_add(unsigned int cpu)
	spin_lock(&pkg_work_lock);
	if (topology_physical_package_id(cpu) > max_phy_id)
		max_phy_id = topology_physical_package_id(cpu);
	pkg_work_scheduled = krealloc(pkg_work_scheduled,
	temp = krealloc(pkg_work_scheduled,
			(max_phy_id+1) * sizeof(u8), GFP_ATOMIC);
	if (!pkg_work_scheduled) {
	if (!temp) {
		spin_unlock(&pkg_work_lock);
		err = -ENOMEM;
		goto err_ret_free;
	}
	pkg_work_scheduled = temp;
	pkg_work_scheduled[topology_physical_package_id(cpu)] = 0;
	spin_unlock(&pkg_work_lock);