From nobody Fri Oct 2 09:17:30 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EB882382381; Mon, 3 Aug 2026 10:33:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785753206; cv=none; b=EbjFqdmpA0W929llgOUwOGg0XleIbd9P6UuwswVJuFHN+oJQTNv2/lwWnUo3PnV2a+L1thTpYu4KxGsvoX1LAZieePajd5RmGCaGuMc/3e2zsZQF8+9iwTR8Q8tDH3TKhV3fP8jmvgBcC3XH6oGmdvzDdB6E1MRzTJxYcMME1xI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785753206; c=relaxed/simple; bh=D4oNQ6oqj39gKILMcLpB9mw/COd0/NB/PFjbdnNGxUo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kn+Wt5UnZQ3jb+H4r0pFeG8WeYUWIcQNPrWTMOMW/LD43OLWGXOOttDK6AV03jW4lc5uyWAVptGEOVNWMThOqYm5x411gVtHkkfUGlQSZOXIWQ48T93u7j9AAqBeHHUNy9ekQsSj8lnx9aHXxPr5HZl3nxnnos5G8gIAryc/9ZM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=e86ppyWI; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="e86ppyWI" Received: by smtp.kernel.org (Postfix) with ESMTPS id 9AE66C2BCB9; Mon, 3 Aug 2026 10:33:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1785753205; bh=D4oNQ6oqj39gKILMcLpB9mw/COd0/NB/PFjbdnNGxUo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=e86ppyWIz3LANAAP89ozzlPgLUFtt8MlyYLKueLbXsrKxCbftL8dt117M+m7THawn ClZRH46jseRDBOEtbjmbPmSgEclpAeYEu/gReGBx+TipiVddPdrwLqycml5wVhjjHH zg2u2its2w6/hLQGH9ydS8yJUoJ7x/gNkghISSJ/s1+sg8JyVI+RKv9qq+Md2NIBMK 6ttgfjw99Aq6/32k3gfnAkDtu7E/Upt79Vw1Krpx7N9XneANsLBBvZ3MzdFbnRyoS1 AiiZwoZqBCVhOU6oYpauY6ofZw70JZa4sKXpBnz0qHppbP7MPqK+QndwgebluFh66i ZbQwU+XAJPumA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7A096C5518F; Mon, 3 Aug 2026 10:33:25 +0000 (UTC) From: Michalis Niarchos via B4 Relay Date: Mon, 03 Aug 2026 12:33:20 +0200 Subject: [PATCH 1/4] perf tools: Fix memory leak in cmd_kvm() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260803-perf-kvm-fixes-v1-1-a5db849ac973@gmail.com> References: <20260803-perf-kvm-fixes-v1-0-a5db849ac973@gmail.com> In-Reply-To: <20260803-perf-kvm-fixes-v1-0-a5db849ac973@gmail.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark Cc: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Michalis Niarchos X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1785753204; l=909; i=michael.niarchos@gmail.com; s=20260731; h=from:subject:message-id; bh=pkvE3n3gTEaq2KuDwi9uZbKHwl+KAztpvrJQ/tTLtCs=; b=WNwQczX2dy1XjwQwopzjgQDoEkFVdosmmiIGscy2JIeCAu4XCNQ7KYP8ZjihRf+4Nog+608gw PVbVva6K74YCcQRQECSbghjCfKM6mnjXf77YXFqN1BINueMxS0ASA4l X-Developer-Key: i=michael.niarchos@gmail.com; a=ed25519; pk=/LBZRQzfuxTnSaZhgZE8EP7mHr0poyqlKeFssNqkzFE= X-Endpoint-Received: by B4 Relay for michael.niarchos@gmail.com/20260731 with auth_id=912 X-Original-From: Michalis Niarchos Reply-To: michael.niarchos@gmail.com From: Michalis Niarchos filename may get allocated by get_filename_for_perf_kvm(), but is never freed. Use string literals to remove the need for freeing. Signed-off-by: Michalis Niarchos --- tools/perf/builtin-kvm.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c index 394302ebdb16..44c6998f2ee5 100644 --- a/tools/perf/builtin-kvm.c +++ b/tools/perf/builtin-kvm.c @@ -606,11 +606,11 @@ static const char *get_filename_for_perf_kvm(void) const char *filename; =20 if (perf_host && !perf_guest) - filename =3D strdup("perf.data.host"); + filename =3D "perf.data.host"; else if (!perf_host && perf_guest) - filename =3D strdup("perf.data.guest"); + filename =3D "perf.data.guest"; else - filename =3D strdup("perf.data.kvm"); + filename =3D "perf.data.kvm"; =20 return filename; } --=20 2.55.0 From nobody Fri Oct 2 09:17:30 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EB7F5380FE0; Mon, 3 Aug 2026 10:33:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785753206; cv=none; b=P1Le1GSJIbq5ZnTV9v64RAiONOBT+sljpWDEPFpy8v8SobKSGffO5t5JreS4lJTaTAjxUBjmZYz6FWtjs9yBkDDs0oLkPREloHhfJWW29yozjJLxCBMe1XL09zGCDb6Z7wUFlp5S/X7xdL1vTx5qkDJ938HCS3kk8hMvjfA9qMM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785753206; c=relaxed/simple; bh=BrttYSDCZ3UPdyXCnU0naHlWRe3etFk1gvV4ByRhCIk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LOX2i9+ACqx49BjAtBr6g1XOSiTbIPek8PJmNun3Di9pKFJfc9k7Blw6i3fKMg6Yk60BHvGAqZa0xKSSqvLA4q6Q4ECdmA9o2cX0BbFCUzszD9XVBnXXe6a+dSgXMLrKbV+o1Yk7rzDxrKv27IkpdkGVBwD0cPfS+EV9+jlTV7Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mbsPfO6a; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="mbsPfO6a" Received: by smtp.kernel.org (Postfix) with ESMTPS id AA833C2BCF6; Mon, 3 Aug 2026 10:33:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1785753205; bh=BrttYSDCZ3UPdyXCnU0naHlWRe3etFk1gvV4ByRhCIk=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=mbsPfO6aZarcXg+qNfWL0PtzG30Hd5Qyt4E2mqcbwEzZ1EIGbYZnt8VWu1jAHEAR2 vOwIjm7MTdLkX2eo97M9mMu2HlC8z4QwrSp91aY0chH+8KtniTgQfM9Mvc94iCW2Zb VIg4hoDVKx3ugT5iWD4Qvdt505yrVqFAzJwRg1hZ8JD39cx/Id6JETFrh+Ig2svJU2 2Biex0vzfH7HCWSCfs2+ybElQuS1JJxnheB/hxqOM/ZnWTlZ/6hEJf+RvM40Cb/AQH At0j0RZ04KSUY0E2LQtoKnJDPjUPVQbFy7yShU+yTYDchoAbLcCPskkggd8/facmBx VJQbflNEKwO5w== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 885DBC55184; Mon, 3 Aug 2026 10:33:25 +0000 (UTC) From: Michalis Niarchos via B4 Relay Date: Mon, 03 Aug 2026 12:33:21 +0200 Subject: [PATCH 2/4] perf tools: Fix memory leak in kvm_events_report() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260803-perf-kvm-fixes-v1-2-a5db849ac973@gmail.com> References: <20260803-perf-kvm-fixes-v1-0-a5db849ac973@gmail.com> In-Reply-To: <20260803-perf-kvm-fixes-v1-0-a5db849ac973@gmail.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark Cc: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Michalis Niarchos X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1785753204; l=761; i=michael.niarchos@gmail.com; s=20260731; h=from:subject:message-id; bh=+xGD7FspTyvyggckeT50Nwqu43WI7i8N4AYpJ8estqw=; b=AdZ2NDsuv585bd+dL1dq8Z6u78WO7LwJ50KwamPaKemrMj3ZQDmMM4oB3Ot8YfkM7/YVw528o XgrkQSZEBeID61nF3k/9x40UxpiivbdVB4ZmP5KlpbNNa1GM7zFp6pL X-Developer-Key: i=michael.niarchos@gmail.com; a=ed25519; pk=/LBZRQzfuxTnSaZhgZE8EP7mHr0poyqlKeFssNqkzFE= X-Endpoint-Received: by B4 Relay for michael.niarchos@gmail.com/20260731 with auth_id=912 X-Original-From: Michalis Niarchos Reply-To: michael.niarchos@gmail.com From: Michalis Niarchos parse_options() calls parse_options_subcommand(), which allocates the usage string. Free it. Signed-off-by: Michalis Niarchos --- tools/perf/builtin-kvm.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c index 44c6998f2ee5..1a013698cae3 100644 --- a/tools/perf/builtin-kvm.c +++ b/tools/perf/builtin-kvm.c @@ -1755,6 +1755,9 @@ kvm_events_report(struct perf_kvm_stat *kvm, int argc= , const char **argv) if (argc) usage_with_options(kvm_events_report_usage, kvm_events_report_options); + + /* free usage string allocated by parse_options */ + free((void *)kvm_events_report_usage[0]); } =20 #ifndef HAVE_SLANG_SUPPORT --=20 2.55.0 From nobody Fri Oct 2 09:17:30 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 04378382F25; Mon, 3 Aug 2026 10:33:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785753206; cv=none; b=fq1fnFEVc0xCqSOww5RQqy3Iy8gh2maXfwZ/EYyhN8h3OH/dhLdQUi8A0R1t+4Xr1ybvomJH/DPR7DXQ9PJeeg+M7RUt1VYrnC/7yMIUGjId9LS1p4eXEYBWcbqNGL2N0eMm1rCMfDdKjy10Lrd9Dzyw15h2XRc1o9mvBWfkuoc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785753206; c=relaxed/simple; bh=xc4DAGfdMMiRez3o1K4068JADxB0HqpgizL47L3i86E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p37aa/ZfP7X6t/gGrC1A0BW8jDhkZUFrAZvgqfUL9WQ2Em7QmMOXCrBJK5QXuMMnL3WHlsoTgrPTI0f2vFGTDdus+N7dMyj2lsriobQND+9Y8cIrdPJGU73hJJNEfKfKfTggJob5NBch+5JQOd3yt+hlbmWLn0u9h8LHJh00zGw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=BrMDk+51; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="BrMDk+51" Received: by smtp.kernel.org (Postfix) with ESMTPS id B7A2CC2BCFC; Mon, 3 Aug 2026 10:33:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1785753205; bh=xc4DAGfdMMiRez3o1K4068JADxB0HqpgizL47L3i86E=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=BrMDk+51ACNA34TzCtd+oaU0TkMzEeUoGjeSAhr52hsaFEftVrM02a8rMCXXD8fhG 9PMKo3W1RGaQ1c77ndo7SHDnEH8kPEG+d9fh0cmKNjJwlMvxjLSxpNvQnswXVL/7/g QKJEvdMJOdXgFBBhAj3t6DEkT5VEOL+Dw+7Ya9/zKqjyH0jgPbuA6KOx7C/5EjdoWS TXaT+rXsSp53MN9apBkLHR69N8DpfAYgDVAZGdwhxa06P979eAt7NC8/dovSBbd1XN eqdx6Cidg99DLNrz9LlNljn+ShaMap1EFU9UbkzdQtw2gSckI1/JKbVRx/LjEilU1p 6X8PUEqqH+Fcw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9963EC55822; Mon, 3 Aug 2026 10:33:25 +0000 (UTC) From: Michalis Niarchos via B4 Relay Date: Mon, 03 Aug 2026 12:33:22 +0200 Subject: [PATCH 3/4] perf tools: Fix double free and memory leak in kvm_events_record() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260803-perf-kvm-fixes-v1-3-a5db849ac973@gmail.com> References: <20260803-perf-kvm-fixes-v1-0-a5db849ac973@gmail.com> In-Reply-To: <20260803-perf-kvm-fixes-v1-0-a5db849ac973@gmail.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark Cc: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Michalis Niarchos X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1785753204; l=2074; i=michael.niarchos@gmail.com; s=20260731; h=from:subject:message-id; bh=qviC10maUOTVKZJOnRSF+BcmmvSChM1/SRTVYIej1IE=; b=JgHGYfn/OMDHkP4IQn0q/SxErHGCyDFFYQbYnRIM2qNQELby7MckSnN2rVtDY/SIz1BXSFtmN aWfuYzk5Yk9CnaxKidN+c+KxpB3njQpL1EA3WlSWChd6A/gv8Yt/ziO X-Developer-Key: i=michael.niarchos@gmail.com; a=ed25519; pk=/LBZRQzfuxTnSaZhgZE8EP7mHr0poyqlKeFssNqkzFE= X-Endpoint-Received: by B4 Relay for michael.niarchos@gmail.com/20260731 with auth_id=912 X-Original-From: Michalis Niarchos Reply-To: michael.niarchos@gmail.com From: Michalis Niarchos cmd_record() reorders the contents of the rec_argv pointer array, so its entry order no longer matches the order in which the caller originally allocated them. Freeing the contents of rec_argv by iterating the reordered array results in some pointers being freed twice and others never freed. All the entries of rec_argv come from literals or pointers that are valid for the lifetime of this call. Reference them directly instead of duplicating to remove the need to individually track and free each entry. Signed-off-by: Michalis Niarchos --- tools/perf/builtin-kvm.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c index 1a013698cae3..189ef3576e34 100644 --- a/tools/perf/builtin-kvm.c +++ b/tools/perf/builtin-kvm.c @@ -1681,18 +1681,18 @@ kvm_events_record(struct perf_kvm_stat *kvm, int ar= gc, const char **argv) return -ENOMEM; =20 for (i =3D 0; i < ARRAY_SIZE(record_args); i++) - rec_argv[i] =3D STRDUP_FAIL_EXIT(record_args[i]); + rec_argv[i] =3D record_args[i]; =20 for (j =3D 0; j < events_tp_size; j++) { - rec_argv[i++] =3D STRDUP_FAIL_EXIT("-e"); - rec_argv[i++] =3D STRDUP_FAIL_EXIT(kvm_events_tp(e_machine)[j]); + rec_argv[i++] =3D "-e"; + rec_argv[i++] =3D kvm_events_tp(e_machine)[j]; } =20 - rec_argv[i++] =3D STRDUP_FAIL_EXIT("-o"); - rec_argv[i++] =3D STRDUP_FAIL_EXIT(kvm->file_name); + rec_argv[i++] =3D "-o"; + rec_argv[i++] =3D kvm->file_name; =20 for (j =3D 1; j < (unsigned int)argc; j++, i++) - rec_argv[i] =3D STRDUP_FAIL_EXIT(argv[j]); + rec_argv[i] =3D argv[j]; =20 set_option_flag(record_options, 'e', "event", PARSE_OPT_HIDDEN); set_option_flag(record_options, 0, "filter", PARSE_OPT_HIDDEN); @@ -1717,9 +1717,6 @@ kvm_events_record(struct perf_kvm_stat *kvm, int argc= , const char **argv) record_usage =3D kvm_stat_record_usage; ret =3D cmd_record(i, rec_argv); =20 -EXIT: - for (i =3D 0; i < rec_argc; i++) - free((void *)rec_argv[i]); free(rec_argv); return ret; } --=20 2.55.0 From nobody Fri Oct 2 09:17:30 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 37A03389DEC; Mon, 3 Aug 2026 10:33:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785753206; cv=none; b=BphCAgHek+ulC6UqX2Xh+NZlrQGvCSa4xznN1FHu/GIVu1aswl30Y9vYNW+5k9wqXyUlVymApwenWqYQPP8zPJwBmidoSliNiZ8bMo1l/3PIV8P4jaaWAkRtt47OdYjAJ30KHJjAeXdfTAT+7z3RknJgtMo9JpbVFbh8fHKOHjE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785753206; c=relaxed/simple; bh=ze3/aIIA1Z656V9GipRlbTXw90aS1EjG5KR5o6i1Kvo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sSlGsxT+2uyOJBOWZH48miVaRa1HyonkjRCbZCKpCZJ7WyjUO5UC6uiH2iKEQn2P88aAx7UGUJzMA4HvXiC3PsZ8BvQcSwOugyrI8U+nmADIEOBpliDlQm36rQGDZ3RTI8/mKthtr7lPhoyiJbxpHoFO59CwjFujiFCuhGeYb0c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VYFlnG8u; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="VYFlnG8u" Received: by smtp.kernel.org (Postfix) with ESMTPS id C280CC2BCFB; Mon, 3 Aug 2026 10:33:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1785753205; bh=ze3/aIIA1Z656V9GipRlbTXw90aS1EjG5KR5o6i1Kvo=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=VYFlnG8ueth9oLL0Ux34ru2jZ9XGPNiLLv+iww6Ejb9GnqnnSWigZ3wcX3I80f4+a TRmNgFNR9qZlS6vYvFJ7l7SreWR9aNDiuaGxhI9GVI14z4zuWHaBChpMneX7EM03tg T4AtCG9k/Osy235a7OSqT3FQYXxVoFXOl6hr/uq4cm6gvYhgqeNw0Lqrcw9/s6KrZi FPBuoMBBs0vKxaSj3ffrBw+E9IG5OuSiWlfFCSxbHziCAchomhuj+60ufmn28FSsI6 jh8cyMZT44yJ+a8Vv8Ka9k619+misWKOw7C4EcDrnxwwESNslFIVsiG3UbcASfd0Wq 8L7D4PrUVKLvQ== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id AFA79C5518E; Mon, 3 Aug 2026 10:33:25 +0000 (UTC) From: Michalis Niarchos via B4 Relay Date: Mon, 03 Aug 2026 12:33:23 +0200 Subject: [PATCH 4/4] perf tools: Fix memory leak in cmd_kvm() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260803-perf-kvm-fixes-v1-4-a5db849ac973@gmail.com> References: <20260803-perf-kvm-fixes-v1-0-a5db849ac973@gmail.com> In-Reply-To: <20260803-perf-kvm-fixes-v1-0-a5db849ac973@gmail.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark Cc: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, Michalis Niarchos X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1785753204; l=2666; i=michael.niarchos@gmail.com; s=20260731; h=from:subject:message-id; bh=aAXwiliLnci6ARcvdP09SP99aBXKZEyzobOz6tm8hbA=; b=1HQJR92TTBq0FroPdOZA3NsqlEbOi/eh3gya1ArmHe/YqCqXG/yB1xKKbd9s4KbDvgWa9eNj8 uu4K3EbE7WZB7ScJc+nn1uROs3i2P9Hsn7Hce3RKQ72cWvH1r0zqN3M X-Developer-Key: i=michael.niarchos@gmail.com; a=ed25519; pk=/LBZRQzfuxTnSaZhgZE8EP7mHr0poyqlKeFssNqkzFE= X-Endpoint-Received: by B4 Relay for michael.niarchos@gmail.com/20260731 with auth_id=912 X-Original-From: Michalis Niarchos Reply-To: michael.niarchos@gmail.com From: Michalis Niarchos The usage string is allocated by parse_options_subcommand() and freed only on one return path. Using a single return point guarantees it is freed on all occasions. Signed-off-by: Michalis Niarchos --- tools/perf/builtin-kvm.c | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c index 189ef3576e34..56062c305db1 100644 --- a/tools/perf/builtin-kvm.c +++ b/tools/perf/builtin-kvm.c @@ -2145,6 +2145,7 @@ int cmd_kvm(int argc, const char **argv) const char *const kvm_subcommands[] =3D { "top", "record", "report", "dif= f", "buildid-list", "stat", NULL }; const char *kvm_usage[] =3D { NULL, NULL }; + int ret =3D 0; =20 exclude_GH_default =3D true; perf_host =3D 0; @@ -2163,29 +2164,39 @@ int cmd_kvm(int argc, const char **argv) =20 if (!file_name) { pr_err("Failed to allocate memory for filename\n"); - return -ENOMEM; + ret =3D -ENOMEM; + goto exit; } } =20 - if (strlen(argv[0]) > 2 && strstarts("record", argv[0])) - return __cmd_record(file_name, argc, argv); - else if (strlen(argv[0]) > 2 && strstarts("report", argv[0])) - return __cmd_report(file_name, argc, argv); - else if (strlen(argv[0]) > 2 && strstarts("diff", argv[0])) - return cmd_diff(argc, argv); - else if (!strcmp(argv[0], "top")) - return __cmd_top(argc, argv); - else if (strlen(argv[0]) > 2 && strstarts("buildid-list", argv[0])) - return __cmd_buildid_list(file_name, argc, argv); + if (strlen(argv[0]) > 2 && strstarts("record", argv[0])) { + ret =3D __cmd_record(file_name, argc, argv); + goto exit; + } else if (strlen(argv[0]) > 2 && strstarts("report", argv[0])) { + ret =3D __cmd_report(file_name, argc, argv); + goto exit; + } else if (strlen(argv[0]) > 2 && strstarts("diff", argv[0])) { + ret =3D cmd_diff(argc, argv); + goto exit; + } else if (!strcmp(argv[0], "top")) { + ret =3D __cmd_top(argc, argv); + goto exit; + } else if (strlen(argv[0]) > 2 && strstarts("buildid-list", argv[0])) { + ret =3D __cmd_buildid_list(file_name, argc, argv); + goto exit; + } #if defined(HAVE_LIBTRACEEVENT) - else if (strlen(argv[0]) > 2 && strstarts("stat", argv[0])) - return kvm_cmd_stat(file_name, argc, argv); + else if (strlen(argv[0]) > 2 && strstarts("stat", argv[0])) { + ret =3D kvm_cmd_stat(file_name, argc, argv); + goto exit; + } #endif else usage_with_options(kvm_usage, kvm_options); =20 +exit: /* free usage string allocated by parse_options_subcommand */ free((void *)kvm_usage[0]); =20 - return 0; + return ret; } --=20 2.55.0