lkml.org 
[lkml]   [2019]   [Sep]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.3 176/203] tools/power/x86/intel-speed-select: Fix memory leak
    Date
    From: Prarit Bhargava <prarit@redhat.com>

    [ Upstream commit 3bc3d30ca324bfc3045a1a7fe1f5fe5ad5d92fd9 ]

    cpumasks are allocated by calling the alloc_cpu_mask() function and are
    never free'd. They should be free'd after the commands have run.

    Fix the memory leaks by calling free_cpu_set().

    Signed-off-by: Prarit Bhargava <prarit@redhat.com>
    Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Cc: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Cc: David Arcari <darcari@redhat.com>
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/power/x86/intel-speed-select/isst-config.c | 16 +++++++++++-----
    1 file changed, 11 insertions(+), 5 deletions(-)

    diff --git a/tools/power/x86/intel-speed-select/isst-config.c b/tools/power/x86/intel-speed-select/isst-config.c
    index 91c5ad1685a15..6a10dea01eefc 100644
    --- a/tools/power/x86/intel-speed-select/isst-config.c
    +++ b/tools/power/x86/intel-speed-select/isst-config.c
    @@ -603,6 +603,10 @@ static int isst_fill_platform_info(void)

    close(fd);

    + if (isst_platform_info.api_version > supported_api_ver) {
    + printf("Incompatible API versions; Upgrade of tool is required\n");
    + return -1;
    + }
    return 0;
    }

    @@ -1529,6 +1533,7 @@ static void cmdline(int argc, char **argv)
    {
    int opt;
    int option_index = 0;
    + int ret;

    static struct option long_options[] = {
    { "cpu", required_argument, 0, 'c' },
    @@ -1590,13 +1595,14 @@ static void cmdline(int argc, char **argv)
    set_max_cpu_num();
    set_cpu_present_cpu_mask();
    set_cpu_target_cpu_mask();
    - isst_fill_platform_info();
    - if (isst_platform_info.api_version > supported_api_ver) {
    - printf("Incompatible API versions; Upgrade of tool is required\n");
    - exit(0);
    - }
    + ret = isst_fill_platform_info();
    + if (ret)
    + goto out;

    process_command(argc, argv);
    +out:
    + free_cpu_set(present_cpumask);
    + free_cpu_set(target_cpumask);
    }

    int main(int argc, char **argv)
    --
    2.20.1
    \
     
     \ /
      Last update: 2019-09-22 21:31    [W:4.248 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site