From nobody Fri Oct 2 10:07:30 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 C0DE929D270; Sun, 2 Aug 2026 14:23:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785680604; cv=none; b=UxoamhFF78gn/fo1TeBLzGBg2aXM4u17aLx8kpxXxiOox8q//BTRK6uL5WRaFionWjS+ECH7fn5SPLCxlisIgB1jRhaj+4KSa8ORPSJvIQaevFQFS3BDb8YKdDWGvWpRrgRNlyh05+GmhsBD4NsZ28tzM0Bc9E5wQODgvKS8v3Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785680604; c=relaxed/simple; bh=IoqYJsdyLrhtQ4Jk74bUjHFI14vzu/T0fHc+ZVtKtY4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LitX5JiJeIdKtIPbr8zgIVOg71S5FTLXdHo0h3eBIRRZrViqqDAwfZjqJIU9cVuojKwWCIJ/lFvkgvvBT31phg++MDbspaHsZ1Eo8hzMe1zl/5EXctjualZOHkSom7aE8JeZ0c3T71ls7LPJUL6Dim/VT5e2bkVcg952Z6R+wvY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=lNf6YYUF; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="lNf6YYUF" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3E6241F00A3A; Sun, 2 Aug 2026 14:23:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1785680603; bh=lDlWRE2o5o/7jvO2n5xt5+TC0ATLFwoubX8hTIOvLTg=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=lNf6YYUF81RWZ1amF5VleVlDlD/APS8QbFFHCu3kXCF8tHXjN/dR4COqqVMVbahwS m/BmXXpwVKGNLe2jb6IZOXmI8wQSQDDIDlYmvI+Dh7qS0CwUveCkRU4aH2A3GF5AvU kBH75pRdCjqOQ9Sn8tX3Q7+G+CLsLrbExDWb/ETH/KyWWixEpHuRMiVAnPuKl85lPY jDpUyrOf51YmF+5z5FuXzjY5MRSSMe5rLSjTtfU2p/7pGTtUE0zwOt/FMJaH/0xzII NiRBI5D0jMbm3sViXCZ6Tkixg33m8mnD4s0MpInAYWXwMQd1Fk2wq6y8EP4G6+tDGV CqkS8U0CEg6cg== From: Arnaldo Carvalho de Melo To: Namhyung Kim Cc: Ingo Molnar , Thomas Gleixner , James Clark , Jiri Olsa , Ian Rogers , Adrian Hunter , Clark Williams , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, Arnaldo Carvalho de Melo , sashiko-bot Subject: [PATCH 1/2] perf c2c: Fix error masking and OOM handling in hpp_list__parse() Date: Sun, 2 Aug 2026 11:23:12 -0300 Message-ID: <20260802142313.154514-2-acme@kernel.org> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260802142313.154514-1-acme@kernel.org> References: <20260802142313.154514-1-acme@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Arnaldo Carvalho de Melo hpp_list__parse() has two bugs: 1. The PARSE_LIST macro resets ret =3D 0 at the start of each invocation, so an error from output parsing is silently overwritten when the sort parsing block runs. The function returns success with partially initialized state. 2. When the caller passes a non-NULL output_ or sort_ string, but strdup() returns NULL due to OOM, NULL is passed to PARSE_LIST which treats it as empty input (the "if (!_list) break" branch). No error is returned. Fix by checking strdup() return values before proceeding, and preserving the first error across PARSE_LIST calls by checking ret and jumping to the cleanup label. Fixes: 2d388bd0c9d3 ("perf c2c report: Add stdio output support") Reported-by: sashiko-bot Cc: Jiri Olsa Assisted-by: Claude:claude-opus-4.6 Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/builtin-c2c.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c index c9584dbedf77afe8..332d360ca533424b 100644 --- a/tools/perf/builtin-c2c.c +++ b/tools/perf/builtin-c2c.c @@ -2093,8 +2093,18 @@ static int hpp_list__parse(struct perf_hpp_list *hpp= _list, char *sort =3D sort_ ? strdup(sort_) : NULL; int ret; =20 + /* strdup() returns NULL on OOM, don't silently treat as empty */ + if ((output_ && !output) || (sort_ && !sort)) { + ret =3D -ENOMEM; + goto out; + } + PARSE_LIST(output, c2c_hists__init_output); + if (ret) + goto out; PARSE_LIST(sort, c2c_hists__init_sort); + if (ret) + goto out; =20 /* copy sort keys to output fields */ perf_hpp__setup_output_field(hpp_list); @@ -2111,6 +2121,7 @@ static int hpp_list__parse(struct perf_hpp_list *hpp_= list, perf_hpp__append_sort_keys(&hists->list); #endif =20 +out: free(output); free(sort); return ret; --=20 2.55.0 From nobody Fri Oct 2 10:07:30 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 6644C37FF71; Sun, 2 Aug 2026 14:23:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785680608; cv=none; b=U2w/psyBiRbzLPwEPfJgffq1vVQIh2+QPOyvRKgzpPzQiX3NS2H5MKBgXFX+/sL8HOFWbcZUcF5A2PAAxt5NouprTS0n+I2wW3rfcG4qBn+ScW3m97gioT+Uw2hGD+Btl+O7E3jo0vJnlHvry7V0bhbHlxmTSLzmuNAvChUwDh4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785680608; c=relaxed/simple; bh=1gAT514GSEtYiZXNluCJq82MAwWTRcXL+0J2fOWd+Pw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AOgq/tmLJs9abq5hVkROlSg7ZEtSk/MssUJyx64yOCxjFw41LggA/VJ+gcGHKfcbxLDf+FZLL1bfleW1eFUVM/crKuN6nzYcSeH0xy0BiPnzjJ1WdCrMwgW09xgr1nJBr6q6zkDu3dy4aPe2T8eWciLZ9xKRwTsMURahMRJSKVg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=f6Jymj36; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="f6Jymj36" Received: by smtp.kernel.org (Postfix) with ESMTPSA id E28681F000E9; Sun, 2 Aug 2026 14:23:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1785680607; bh=fDW19Tqz4qal6ir1yfqyi+RJe5vNRrZNRNdTxB0/pcU=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=f6Jymj36+RtKkdS9WGJzpqJ09VLqJEW8Xa8Z3zXtPY01rumkwKdzO6jH6ioUSbzJv WnjQzVoC/wwkx/Fzwo6nifQudiK8BcHgnITqBqSkh3x5sXKS4BEm2J0hloVzZEzUDb 9bYwj/OS2dhVTxSu2p1DCbYTqAQARM4Qq8z9F4lzo1sQ++Di9yT+YqUOC/fQCGWUrM 7fwgzrIzOPG6bS0SzXEseLE/5LlujstWIz/71GzY/c+BM1jm6qZBbO5SFbgb8xt5xd HM/hYInmVuZvqHJ4TXyYOMivH6dRyFVqEar1ZlGev9uVRkBXppmLR6aRiM/uvELrTB WBIB6cWyJfxHA== From: Arnaldo Carvalho de Melo To: Namhyung Kim Cc: Ingo Molnar , Thomas Gleixner , James Clark , Jiri Olsa , Ian Rogers , Adrian Hunter , Clark Williams , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, Arnaldo Carvalho de Melo , sashiko-bot Subject: [PATCH 2/2] perf c2c: Clean up registered formats on c2c_hists__init() failure Date: Sun, 2 Aug 2026 11:23:13 -0300 Message-ID: <20260802142313.154514-3-acme@kernel.org> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260802142313.154514-1-acme@kernel.org> References: <20260802142313.154514-1-acme@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Arnaldo Carvalho de Melo When c2c_hists__init() calls hpp_list__parse() and it fails partway through, format structures registered via perf_hpp_list__column_register() and perf_hpp_list__register_sort_field() are left on the hpp_list. The c2c_he__alloc_hists() caller handles this with perf_hpp__reset_output_field(), but perf_c2c_report() does not, leaking the partially registered entries. Fix by adding cleanup inside c2c_hists__init() itself, so all callers are protected. Fixes: 78b275437873 ("perf c2c report: Add sample processing") Reported-by: sashiko-bot Cc: Jiri Olsa Assisted-by: Claude:claude-opus-4.6 Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/builtin-c2c.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c index 332d360ca533424b..84f0f0ba56131b7b 100644 --- a/tools/perf/builtin-c2c.c +++ b/tools/perf/builtin-c2c.c @@ -2132,6 +2132,8 @@ static int c2c_hists__init(struct c2c_hists *hists, int nr_header_lines, struct perf_env *env) { + int ret; + __hists__init(&hists->hists, &hists->list); =20 /* @@ -2144,7 +2146,13 @@ static int c2c_hists__init(struct c2c_hists *hists, /* Overload number of header lines.*/ hists->list.nr_header_lines =3D nr_header_lines; =20 - return hpp_list__parse(&hists->list, /*output=3D*/NULL, sort, env); + ret =3D hpp_list__parse(&hists->list, /*output=3D*/NULL, sort, env); + + /* Unregister any formats added before the failure point */ + if (ret) + perf_hpp__reset_output_field(&hists->list); + + return ret; } =20 static int c2c_hists__reinit(struct c2c_hists *c2c_hists, --=20 2.55.0