From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4289A3A875A for ; Sun, 9 Aug 2026 07:15:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.72 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786259711; cv=none; b=vBkB5mhTWccsIIEwNw8Icztj8+PDrYMiBZ1/4nK98IJ7MfWAHHkRTjFfsCMFc/mPukoK3t9pY/ryzz4LvYCQ98YqrlKtNF43jJPHmOWsER/o/nh5ZPX3JWkhOw7QZwaAWkPIZnsOtI+jPhuSN+WmVY+bCGBkeHd9tMbuBrLefS8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786259711; c=relaxed/simple; bh=EkELwjuoEifgq4yoiaYV05o2puOmeFtCBPEzq98DDQ4=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=UPY/L15u/Eo0lhKQEUPJaWnc6O075qpeH18lYU633PHcDcR3O+w8TCZlXp50At0ddfeulrguMMrtbT6e76F83jjISdwGjq2EHx+J52wXll8lTMr10CCdpDo42OKsrdp63dGjuJO5rCwatquVzfsjxnes5VO92eO1gcZg3H83rY4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=Tvyh45Lh; arc=none smtp.client-ip=209.85.216.72 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="Tvyh45Lh" Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-38fa7b09921so1680402a91.1 for ; Sun, 09 Aug 2026 00:15:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1786259708; x=1786864508; darn=vger.kernel.org; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:from:to:cc:subject:date:message-id:reply-to :content-type; bh=P0IYRX3k7fgU84M+1N/2f6gf9z+pbW3gfbOLrfXfOEg=; b=Tvyh45LhrgkR9nhkSrn+mMopYKiSCwmgUo6IOs+6/Gd+8SMwQCCpRHT8aeVwBMoluR LVsvY+A6az2XhaHEu519kig3oLucmG8PYON+JI0nte9ZhuAn2yS5eFsQEUIbOrU0eaLT S44y5+RvP3TzIvCQUM4kXZWTPXbtsbr3EM2rulG8GuW3p6+jpYB1vCH/E2LeCMgxdqh+ acyb2DztugmTX/8tc6s1cqMPHxfXd67PHPfDl7W6a4pZ1KzI3qIZxf1A6b8yl6hGU4dT +8QiqMOoZc/qFyoi+ku8yybhdc4s5wgwtWI7jlJjrNUc1ImC1TdH7haYR2R+UZAfTPeq Efwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786259708; x=1786864508; h=content-type:cc:to:from:subject:message-id:references:mime-version :in-reply-to:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=P0IYRX3k7fgU84M+1N/2f6gf9z+pbW3gfbOLrfXfOEg=; b=K2oGBNlA0TXvx6n55WjWbX/YUV/XE3ac+3dtvYDmo6dT/1uIydYyUva3W3Io126lME 8tbb0K1d178If3saDCuY+xRr2rOiluu6xjHGWHpGNGwf/RW/K/cWLu0fyRhyK8AY5XUn DWmsKqsEg27Em96qLPeE9R+hL5/jNuQIfE9MW0rIo3btVEtXqjZVIu+OaSfYTwiL9Fux TxqQsZbi9A0mafjnhyssTOHShJEwIgjfCZqdehck+7l/1YvkELYQ3Bsyb08VobD9V46i OxPwbXhyJP1tqL2Op6g36G4QnuFp+jLjuSkFqnXTfCTNzSVpe+m7gPQB1Jil5Azz1v3a WbHA== X-Forwarded-Encrypted: i=1; AHgh+RpaBQl98efKh2HDbMQX6dp6Rr3wuzHSGKo6gdRgLe5yMoeggOkYFbbBCCeELK1chfD0y8yTAs21xiLYjXM=@vger.kernel.org X-Gm-Message-State: AOJu0YxmwmHVrW7azcqCzGWIQa7B5t64m9dRnzhgqg0dp0AhXE0FqwGO GBh3vXdWEDuLPDdiXw6rP1W4QwLuarMH8R9nsMF77Krr843MDhrqsOYCdg6M6WC+UzlCKNg9wSH qtmbaKoDokA== X-Received: from dldyr9-n2.prod.google.com ([2002:a05:701b:4509:20b0:13c:bfe9:dc09]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:3f43:b0:37c:6130:7a5b with SMTP id 98e67ed59e1d1-3903c54302bmr35912690a91.8.1786259708257; Sun, 09 Aug 2026 00:15:08 -0700 (PDT) Date: Sun, 9 Aug 2026 00:14:42 -0700 In-Reply-To: <20260809071455.1221514-1-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260624051535.3584977-1-irogers@google.com> <20260809071455.1221514-1-irogers@google.com> X-Mailer: git-send-email 2.55.0.679.g6767b8d81c-goog Message-ID: <20260809071455.1221514-4-irogers@google.com> Subject: [PATCH v3 03/15] perf tools: Fix sb_evlist leaks in top and record From: Ian Rogers To: irogers@google.com, acme@kernel.org, namhyung@kernel.org Cc: adrian.hunter@intel.com, alice.mei.rogers@gmail.com, dapeng1.mi@linux.intel.com, james.clark@linaro.org, leo.yan@linux.dev, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, mingo@redhat.com, peterz@infradead.org, tmricht@linux.ibm.com Content-Type: text/plain; charset="UTF-8" Fix a memory leak in cmd_top() where top.sb_evlist was not freed if evlist__add_bpf_sb_event() fails. Note that evlist__start_sb_thread() and evlist__stop_sb_thread() take ownership of the evlist and free it, so we must only free it if we fail before starting the thread. Also set top.sb_evlist to NULL to prevent use-after-free bugs. Apply the same fix to builtin-record.c to avoid leaking rec->sb_evlist and calling pthread_join on uninitialized threads in the error path. Assisted-by: Antigravity:gemini-3.1-pro Fixes: b38d85ef49cf ("perf bpf: Decouple creating the evlist from adding the SB event") Signed-off-by: Ian Rogers --- tools/perf/builtin-record.c | 2 ++ tools/perf/builtin-top.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index f58d7e3c7879..a57987851cf0 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -2258,6 +2258,8 @@ static int record__setup_sb_evlist(struct record *rec) if (evlist__add_bpf_sb_event(rec->sb_evlist, perf_session__env(rec->session))) { pr_err("Couldn't ask for PERF_RECORD_BPF_EVENT side band events.\n."); + evlist__put(rec->sb_evlist); + rec->sb_evlist = NULL; return -1; } } diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c index 5933c46ee137..570410599f1b 100644 --- a/tools/perf/builtin-top.c +++ b/tools/perf/builtin-top.c @@ -1881,6 +1881,8 @@ int cmd_top(int argc, const char **argv) if (evlist__add_bpf_sb_event(top.sb_evlist, &host_env)) { pr_err("Couldn't ask for PERF_RECORD_BPF_EVENT side band events.\n."); status = -EINVAL; + evlist__put(top.sb_evlist); + top.sb_evlist = NULL; goto out_put_evlist; } } -- 2.55.0.679.g6767b8d81c-goog