From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f202.google.com (mail-pl1-f202.google.com [209.85.214.202]) (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 E1D112DBF76 for ; Mon, 4 May 2026 07:30:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.202 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777879807; cv=none; b=lFrCUdmZucJpCvcKqd2xvdtfJPkwAQOOEgu1k+c/0Xt6MqcDA9yeRgpLZRns0hH1LSlSfxkd9RHz2fPZtlXuni+K0eOoJqkOyG+THhlwrNlLR3rOO32wjxzzaZdGdFuIh8yePUMf95c+73zzkBNy5xX8/YwgDupBC/TNQeDpN9k= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777879807; c=relaxed/simple; bh=oO73p1xRPTCaH7zWY9uPtQL6ZrNpPDEb1CrIWcRHrM0=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=hSDhfFVir8Q/ZWFIeOGL942CY+zM6RozXHs5/2i6E6IncOSjT5VmYbhnxvi+fa6U8pd3EjMFRgZACNnWvHz7UOdKRnVhbYTANh5jVdXWnWPzKOcm42BaXdXUQWpPIZNCM2L+nBa6ImCJLJPBjQL3AYvqZfGVrfM+8Pm1VlXl/fQ= 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=RryvgqRi; arc=none smtp.client-ip=209.85.214.202 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="RryvgqRi" Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-2b4530a90fdso67202185ad.1 for ; Mon, 04 May 2026 00:30:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1777879803; x=1778484603; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=hdtzf9eHR5G9u38wQE27Ez1yBHseJb6vJmHAUnBL/S4=; b=RryvgqRiXbCZCQ0huAHJfZK2ZHiuL5hkDsBeYB86u+9HC1J8LAtSKMCDPpUcTZi4nj f/Y8hNXvJjxMESKNXpAdRwRiS2od2qZlPamsMV9cw9CKySFO3m3TQVwv+CJjC44+kCeF kL0GRqDd6IFJSqiD/nqCz9skBmvf9vJv8k768PSxJjSu0H+c/pKeMxGIsy1lEN3JDj4C qf8VdI4cWlI9EKKZ8vHu09nguBSDskyvwWmwUX0drTj6IIl7CP5OEAKqI7LNkK7WBmxC WjOnSpy7Uwn3bswKTemOBwCVtzyQB8wwkwKH632I33vhrVHiTAMXEJWcQ5GtzgTvdiAd /3QA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777879803; x=1778484603; h=content-transfer-encoding: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; bh=hdtzf9eHR5G9u38wQE27Ez1yBHseJb6vJmHAUnBL/S4=; b=i4t06os8fQCnq6YyX+A+HXU9YYXpdJ2KMtAdDKhKymhmmRxTv3XW8jtF0U4606gD5e /k3C2ixP0LhiGfhlGntMLLCv/zqLNv24/PGGVHG/Lz39p5sr6ObleaG1wPxXiqNxCJ+E GR39HJJTJ0U5HBtGaQIdQezpeZgnki5zlkT1MiW5o67n7KDbRmrGIHgfYAqlbRZVqMt7 Qhoaw50PCBMe+gLmWT2uFRqrmMWpCIqdT2Lyl08YgGwjyCF6SaaDtqcq/hhtKJw34XUa lM7GbT+WyschtQYalUQ2gqb8N9eXwoU9OaIDA/ZFu5tYWxwnMAhBQeDwag/iWf+Td0z6 eouQ== X-Forwarded-Encrypted: i=1; AFNElJ9i18tFA7x9WoluVvK+Z9RYJ2WomoR2K/6T+ZLG/8JUIbpeUTTa1yHzn8OmU7D3E0U+e38JFqtrbKhSWcY=@vger.kernel.org X-Gm-Message-State: AOJu0YzKKNV18SjxCRW/MZrLw5IzVAxRnm5s3lXv9xqIz2PwKgt9McKN 6KvvejZ0iQb0bVDraI6XrOkGfbi/frJelhFyCQTSJHH852kyb9s5vdcBvWKyPcTM/m1LEMs1570 xEYYrqanCVg== X-Received: from pgc8.prod.google.com ([2002:a05:6a02:2f88:b0:c79:7d5e:795c]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a20:4324:b0:3a1:d516:36f0 with SMTP id adf61e73a8af0-3a7f1f1aea0mr8857778637.36.1777879803059; Mon, 04 May 2026 00:30:03 -0700 (PDT) Date: Mon, 4 May 2026 00:29:35 -0700 In-Reply-To: <20260504072937.2103453-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: <20260504035125.1851720-1-irogers@google.com> <20260504072937.2103453-1-irogers@google.com> X-Mailer: git-send-email 2.54.0.545.g6539524ca2-goog Message-ID: <20260504072937.2103453-3-irogers@google.com> Subject: [PATCH v4 2/4] perf tool: Fix missing schedstat delegates and dont_split_sample_group in delegate_tool From: Ian Rogers To: acme@kernel.org, gmx@google.com, namhyung@kernel.org Cc: adrian.hunter@intel.com, james.clark@linaro.org, jolsa@kernel.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, mingo@redhat.com, peterz@infradead.org, Ian Rogers Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable delegate_tool was missing the delegate overrides for schedstat_cpu and schedstat_domain. As a result, when allocated with zalloc, these callbacks defaulted to NULL, causing a segmentation fault crash if any schedstat events were delivered during event processing. Fix this by adding delegate_schedstat_cpu and delegate_schedstat_domain via the CREATE_DELEGATE_OP2 macro, and ensuring delegate_tool__init correctly registers them. Additionally, delegate_tool__init completely omitted copying the dont_split_sample_group property from the delegate. This would cause wrapper tools to default the flag to false, which corrupts piped event processing (e.g., in perf inject) by triggering duplicate event deliveries on split sample values in deliver_sample_group(). Similarly, perf_tool__init() omitted the initialization of this boolean field. On stack-allocated tools that rely on this initializer (like intel-tpebs or __cmd_evlist), this could result in uninitialized stack garbage evaluating to true=E2=80=94silently dropping non-leader event members in deliver_sample_group(). Fix both issues by properly copying the field in delegate_tool__init and initializing it to false in perf_tool__init. Assisted-by: Gemini-CLI:Google Gemini 3 Fixes: 6331b2669359 ("perf tool: Add a delegate_tool that just delegates ac= tions to another tool") Fixes: 79bcd34e0f3d ("perf inject: Fix leader sampling inserting additional= samples") Signed-off-by: Ian Rogers --- tools/perf/util/tool.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/perf/util/tool.c b/tools/perf/util/tool.c index 013c7839e2cf..ff2150517b75 100644 --- a/tools/perf/util/tool.c +++ b/tools/perf/util/tool.c @@ -285,6 +285,7 @@ void perf_tool__init(struct perf_tool *tool, bool order= ed_events) tool->no_warn =3D false; tool->show_feat_hdr =3D SHOW_FEAT_NO_HEADER; tool->merge_deferred_callchains =3D true; + tool->dont_split_sample_group =3D false; =20 tool->sample =3D process_event_sample_stub; tool->mmap =3D process_event_stub; @@ -433,6 +434,8 @@ CREATE_DELEGATE_OP2(stat_config); CREATE_DELEGATE_OP2(stat_round); CREATE_DELEGATE_OP2(thread_map); CREATE_DELEGATE_OP2(time_conv); +CREATE_DELEGATE_OP2(schedstat_cpu); +CREATE_DELEGATE_OP2(schedstat_domain); CREATE_DELEGATE_OP2(tracing_data); =20 #define CREATE_DELEGATE_OP3(name) \ @@ -470,6 +473,7 @@ void delegate_tool__init(struct delegate_tool *tool, st= ruct perf_tool *delegate) tool->tool.no_warn =3D delegate->no_warn; tool->tool.show_feat_hdr =3D delegate->show_feat_hdr; tool->tool.merge_deferred_callchains =3D delegate->merge_deferred_callcha= ins; + tool->tool.dont_split_sample_group =3D delegate->dont_split_sample_group; =20 tool->tool.sample =3D delegate_sample; tool->tool.read =3D delegate_read; @@ -516,4 +520,6 @@ void delegate_tool__init(struct delegate_tool *tool, st= ruct perf_tool *delegate) tool->tool.bpf_metadata =3D delegate_bpf_metadata; tool->tool.compressed =3D delegate_compressed; tool->tool.auxtrace =3D delegate_auxtrace; + tool->tool.schedstat_cpu =3D delegate_schedstat_cpu; + tool->tool.schedstat_domain =3D delegate_schedstat_domain; } --=20 2.54.0.545.g6539524ca2-goog