Re: [Powertop] [PATCH POWERTOP] Fix various resource leaks

Amit Kucheria <amit.kucheria at linaro.org>
Newsgroups dev.linux.lists.powertop
Message-ID <CAP245DVj8JEWx2oDUvoUBB2+jTKkP9P8CaUXmUbPcfHSUZ9ikg@mail.gmail.com>
Mohammad,

This fix should go upstream. cc'ing the powertop list.

Regards,
Amit

On Thu, Jun 26, 2014 at 12:42 PM, Mohammad Merajul Islam Molla
<meraj.enigma(a)gmail.com> wrote:
> Fixes some resource leaks detected by valgrind and coverity scan.
>
>
> diff --git a/src/devices/ahci.cpp b/src/devices/ahci.cpp
> index ac06460..7f704b6 100644
> --- a/src/devices/ahci.cpp
> +++ b/src/devices/ahci.cpp
> @@ -64,8 +64,10 @@ static string disk_name(char *path, char *target,
> char *shortname)
>                 sprintf(line, "%s/%s/model", pathname, dirent->d_name);
>                 file = fopen(line, "r");
>                 if (file) {
> -                       if (fgets(line, 4096, file) == NULL)
> +                       if (fgets(line, 4096, file) == NULL) {
> +                               fclose(file);
>                                 break;
> +                       }
>                         fclose(file);
>                         c = strchr(line, '\n');
>                         if (c)
> diff --git a/src/devices/devfreq.cpp b/src/devices/devfreq.cpp
> index e16951c..23c4b0c 100644
> --- a/src/devices/devfreq.cpp
> +++ b/src/devices/devfreq.cpp
> @@ -238,6 +238,7 @@ void create_all_devfreq_devices(void)
>
>         callback fn = &devfreq_dev_callback;
>         process_directory(p.c_str(), fn);
> +       closedir(dir);
>  }
>
>  void initialize_devfreq(void)
> diff --git a/src/perf/perf_bundle.cpp b/src/perf/perf_bundle.cpp
> index b0e982b..cf1ae11 100644
> --- a/src/perf/perf_bundle.cpp
> +++ b/src/perf/perf_bundle.cpp
> @@ -142,8 +142,10 @@ static void parse_event_format(const char *event_name)
>
>         buf = read_file(file);
>         free(file);
> -       if (!buf)
> +       if (!buf) {
> +               free(name);
>                 return;
> +       }
>
>         pevent_parse_event(perf_event::pevent, buf, strlen(buf), sys);
>         free(name);
> diff --git a/src/tuning/bluetooth.cpp b/src/tuning/bluetooth.cpp
> index e0bdf12..5100a8a 100644
> --- a/src/tuning/bluetooth.cpp
> +++ b/src/tuning/bluetooth.cpp
> @@ -144,8 +144,10 @@ int bt_tunable::good_bad(void)
>                 if (file) {
>                         char line[2048];
>                         /* first line is standard header */
> -                       if (fgets(line, 2047, file) == NULL)
> +                       if (fgets(line, 2047, file) == NULL) {
> +                               pclose(file);
>                                 goto out;
> +                       }
>                         memset(line, 0, 2048);
>                         if (fgets(line, 2047, file) == NULL) {
>                                 result = last_check_result = TUNE_GOOD;
>
>
>
> --
> Thanks,
> -Meraj
>
> _______________________________________________
> linaro-dev mailing list
> linaro-dev(a)lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/linaro-dev
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.