Commit d303e3dd authored by zhang jiao's avatar zhang jiao Committed by Daniel Lezcano
Browse files

tools/thermal: Fix common realloc mistake



If the 'realloc' fails, the thermal zones pointer is set to NULL. This
makes all thermal zones references which were previously successfully
initialized to be lost.

[dlezcano] : Fixed indentation

Signed-off-by: default avatarzhang jiao <zhangjiao2@cmss.chinamobile.com>
Link: https://lore.kernel.org/r/20241114084039.42149-1-zhangjiao2@cmss.chinamobile.com


Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
parent d8afb8cc
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -259,6 +259,7 @@ static int thermometer_add_tz(const char *path, const char *name, int polling,
{
	int fd;
	char tz_path[PATH_MAX];
	struct tz *tz;

	sprintf(tz_path, CLASS_THERMAL"/%s/temp", path);

@@ -268,13 +269,13 @@ static int thermometer_add_tz(const char *path, const char *name, int polling,
		return -1;
	}

	thermometer->tz = realloc(thermometer->tz,
				  sizeof(*thermometer->tz) * (thermometer->nr_tz + 1));
	if (!thermometer->tz) {
	tz = realloc(thermometer->tz, sizeof(*thermometer->tz) * (thermometer->nr_tz + 1));
	if (!tz) {
		ERROR("Failed to allocate thermometer->tz\n");
		return -1;
	}

	thermometer->tz = tz;
	thermometer->tz[thermometer->nr_tz].fd_temp = fd;
	thermometer->tz[thermometer->nr_tz].name = strdup(name);
	thermometer->tz[thermometer->nr_tz].polling = polling;