tools/thermal: Fix common realloc mistake
authorzhang jiao <zhangjiao2@cmss.chinamobile.com>
Thu, 14 Nov 2024 08:40:39 +0000 (16:40 +0800)
committerDaniel Lezcano <daniel.lezcano@linaro.org>
Fri, 15 Nov 2024 13:29:03 +0000 (14:29 +0100)
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: zhang jiao <zhangjiao2@cmss.chinamobile.com>
Link: https://lore.kernel.org/r/20241114084039.42149-1-zhangjiao2@cmss.chinamobile.com
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
tools/thermal/thermometer/thermometer.c

index 1a87a0a..022865d 100644 (file)
@@ -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;