From nobody Fri Dec 19 02:16:18 2025 Received: from mail-pj1-f73.google.com (mail-pj1-f73.google.com [209.85.216.73]) (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 C0D531F1909 for ; Wed, 4 Jun 2025 17:46:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749059162; cv=none; b=fHG0lvghcznvfmfCQ0k8hWSgwwr5uPYevb1alaZfA4oBER9JRZBs7dVD7dOwrPJw8O9m2+WOO7nZYIYlngK28N1ptveYzTCmLzVy1crsCESGQ9ECL5a/E+L/gTO6378VPmAVE/AScwA/9PQgNMEbck/h3/wE2qcFC8KPaSL0Syk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749059162; c=relaxed/simple; bh=mj6O7f7WcH/zJTyNj5dVGJmYfITex5422KtPR0vbY2M=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=DeuTEskrjtPkgutOXUFIS1dN68GhkzEcGq/+z7tosb9mO76jlhKJskECJs59D4zMNkxeCU9wFHX/MM03RDOpbmog5W760+Qc/Hsmog/EvHK4mInEVxlW055xxGGxAqqmLKGlipCuof1UXASzFOBEjSyNfWmDRahwAaBHXEaQe4U= 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=L/UYpurF; arc=none smtp.client-ip=209.85.216.73 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="L/UYpurF" Received: by mail-pj1-f73.google.com with SMTP id 98e67ed59e1d1-311d067b3faso142678a91.1 for ; Wed, 04 Jun 2025 10:46:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1749059160; x=1749663960; darn=vger.kernel.org; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=cr8AU18vrh9A9pbk1lgn8Z0KqD4pWB6L1KR+gFE/XN0=; b=L/UYpurFMFckJRvZrZPVO29Iwr3/Q6Rdfl4st/QRvnlqz/MfCvqG4TPr4Ql//Dce7v 6iCU3CpsI9sV7HZFrsaKzAaMtW/tgjD3ijJoTpB22fV8A07DGwlcTflXXHjsqKmQZ/Kb W6zBoF+EZm9qoVlzDPoDdrcnvgehYjwMgwD4Z6Y46GtBSF6slYpF+4kP8dW+em8JBJeY TNFlaxjI9PPDV+mdQdr9cCgXXxmWQ93jG279+S9ZtIg9K8pioH7c3mcpUBrEuj2rVhQe M/rRBux8gF1U+AyWTli3t2E5QDMy/T0xcZTESO33WkNGv23pn+Nr+XIlczEyvYsESDvt 6r6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749059160; x=1749663960; h=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=cr8AU18vrh9A9pbk1lgn8Z0KqD4pWB6L1KR+gFE/XN0=; b=KWkKQdql6eRhvv7MZ4R50rjhYFOTxrHBDvDga0RYZ9K6HQF2K121tpJhIF9SQz4weS mOjCoxBKlneLRT/D9ur73lpb+NlB2diWR6QI9TNfJ7pif+9oQdAnQlBWUpegkJm2Z9nd go+6B3mOZmYvhhZqK+rJ280AVXtHG/ubqKTJ0f4qXRLb8KPxsdAF/WKiGIVzmQ8VFvvN olPdYc+qlWJJKGSaocTA56dV+8IaCgMHDg7T6VQ8tQLl9eAlAnl37OuUyuiNJVJVKecu L3TdWFBBJZ/l9/TkgpQa23yQEgTR4MUCPD45ANqjWWh+YdZoZkfpTkxrT5Xe2bU7evcY h/Rg== X-Forwarded-Encrypted: i=1; AJvYcCWw/m/n4pk5v0jEeLpb3Iv1k4VjbpxPfOr88vDQh1kYYhtnRNCKRUZ5di69MUC3yhiccv+j2e5/yr8ZokA=@vger.kernel.org X-Gm-Message-State: AOJu0Yzlqls42WXVKyP2b6BaqTZa0bSMfklCcR1euxBgSgG9KGtqJdsW M8sadnsnGeLxidtRr/lLT+czKumk+NtuXiNYnHrvwhFtNy2H9Hrj9mf3sx7uRWIGfzdAvc3bIi9 jxRzMDIdkKw== X-Google-Smtp-Source: AGHT+IEOHpDk1MKKyIDD4q4LfRorilSCWNnk3I7uuyrrodCqLKuvammmxhdoTFNTJO57M9BNCXCFuWEOQX2b X-Received: from pjvv11.prod.google.com ([2002:a17:90b:588b:b0:311:1a09:11ff]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:5544:b0:311:c970:c9ce with SMTP id 98e67ed59e1d1-3130cdd981dmr6224022a91.28.1749059160074; Wed, 04 Jun 2025 10:46:00 -0700 (PDT) Date: Wed, 4 Jun 2025 10:45:35 -0700 In-Reply-To: <20250604174545.2853620-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: <20250604174545.2853620-1-irogers@google.com> X-Mailer: git-send-email 2.50.0.rc0.604.gd4ff7b7c86-goog Message-ID: <20250604174545.2853620-2-irogers@google.com> Subject: [PATCH v4 01/10] perf parse-events filter: Use evsel__find_pmu From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Dapeng Mi , Thomas Richter , Veronika Molnarova , Chun-Tse Shao , Leo Yan , Hao Ge , Howard Chu , Weilin Wang , Levi Yun , "Dr. David Alan Gilbert" , Gautam Menghani , Tengda Wu , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Rather than manually scanning PMUs, use evsel__find_pmu that can use the PMU set during event parsing. Signed-off-by: Ian Rogers --- tools/perf/util/parse-events.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index 2380de56a207..d96adf23dc94 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -2564,9 +2564,8 @@ foreach_evsel_in_last_glob(struct evlist *evlist, static int set_filter(struct evsel *evsel, const void *arg) { const char *str =3D arg; - bool found =3D false; int nr_addr_filters =3D 0; - struct perf_pmu *pmu =3D NULL; + struct perf_pmu *pmu; =20 if (evsel =3D=3D NULL) { fprintf(stderr, @@ -2584,16 +2583,11 @@ static int set_filter(struct evsel *evsel, const vo= id *arg) return 0; } =20 - while ((pmu =3D perf_pmus__scan(pmu)) !=3D NULL) - if (pmu->type =3D=3D evsel->core.attr.type) { - found =3D true; - break; - } - - if (found) + pmu =3D evsel__find_pmu(evsel); + if (pmu) { perf_pmu__scan_file(pmu, "nr_addr_filters", "%d", &nr_addr_filters); - + } if (!nr_addr_filters) return perf_bpf_filter__parse(&evsel->bpf_filters, str); =20 --=20 2.50.0.rc0.604.gd4ff7b7c86-goog From nobody Fri Dec 19 02:16:18 2025 Received: from mail-pl1-f201.google.com (mail-pl1-f201.google.com [209.85.214.201]) (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 584F51FC7F1 for ; Wed, 4 Jun 2025 17:46:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749059164; cv=none; b=fTj2KmVBbbKgNDVEei7GzzGUtH4mExIzByZC+o7qHeGacWs12e7n3pNy22X3cUcDnaNCbPDQo/xvQAgs9NtsAss98LHb8V2BBWkVPcMxlAv/F+O9WxgytYi1RDG+9ZY9YqPovU5l6fV6Nm+fAL7Jk9nKTySzUdM9URfEZdk7FZ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749059164; c=relaxed/simple; bh=l/r16VO14AuoTPhHYx1IhtNWRI73iyFImyAUkeVPBI0=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=vGJEPw1NFWeRR/3LnHO2xyAzUoBoPc3tD24hs2bk4sLm2Sop5gQRRMDAYvo8oCRY1j3lbIgiKBM4QE9kRhHjMSHt84/5TraS2ljUOoe2IfYi3xErb+fdaEyhdnIziPH/hySam4DgvRbxU5uiCSYVQpYz0VUbSyiMZwIU5thg3oo= 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=wuxJs9Oo; arc=none smtp.client-ip=209.85.214.201 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="wuxJs9Oo" Received: by mail-pl1-f201.google.com with SMTP id d9443c01a7336-23592f5fcb0so1022965ad.3 for ; Wed, 04 Jun 2025 10:46:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1749059161; x=1749663961; darn=vger.kernel.org; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=B8tuEWlyOsSZ3VWtxSAzfgMOdxNTH4pB9RszdQHfYhc=; b=wuxJs9OohDW4lQF0jMy3TAyejzjvXLOIqdVkebSsCXnIOTe7cu72rmSOrLpbui46vU oLV6yincNi7rAuHOet3780XE1yNAF3BYFuzqPUOsA6m1i/1grN+y94GyJfsdXjmw2wA/ /Qwt1Y0eRJeBDwR0jZLELFxUqNpuKJB1EU+GnBADPk2XSJojYY0guZYkLO0nXvOZlqzi tv+KTBCMRj41b/ywtd4mw6O3JhVGWD+1KKSTXWs9HxLub2OKo9X+oIxpExcuZ21F5sSF kGA3rEV0QLKSbJ1SsR6b/TOvGBeNgFWcxWgdfJa0TcEKtM2hIhT7CeziZ/YpJllhEe1b l6wQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749059161; x=1749663961; h=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=B8tuEWlyOsSZ3VWtxSAzfgMOdxNTH4pB9RszdQHfYhc=; b=N7UbLIG9rReM9+/lbipxmB7dlnG46eRw+BLbka9wE95B6s9Hm9qV1/eACsNEvqU14o ChAdxG4Tn5IODL9/mLSdwzVoloiJ/1CBX6zNKceopEVC958wNkJ/nvVgRxv1xNC4Jzrz 7+dIoopDMHkX2ye6udk/XeqzMIMoFuOTWujTNC8SyOJneF5SLjVshCSo6dHa+FFsQYIu WbsFBHFoJw7G2pOvLiqiIwKoG5P0qktpJh6eQsRScnpix67ayW1kM6ceA5VepLvr+hee vqIGXt+gEmzr4moviM7jnkWLmo0FilL7qbvocn9PJxBjASmd8EmUoZBzp6RD4PxeGS2N gi8A== X-Forwarded-Encrypted: i=1; AJvYcCUmCspQ8Ut1UX9iyz3Fg4Y4QgFZFg/S6hcO/0+MLngvqqsv9On5t2wWLHeQdymi5Y8C6Uo23ggpeSkicKo=@vger.kernel.org X-Gm-Message-State: AOJu0YwNhmFxzatoE5oBFIq4Clmo9vMaBYxFYK18dydGVX7ollm7JHlI TGSP6mGyE92rkNenV4NzifS3LVdFykpUi0DGJLx7ZfkFpqmU0cKh34BlCnE6WB/XPhIFyM9CCQZ rgPB54h1M1w== X-Google-Smtp-Source: AGHT+IFUdQJpYyNZoW3LNov2nnp6DBt7iCUI1cgeGKklZf5D9ju5lKohUdpptZ+KpaNA/8E19pxOS5sBSnwz X-Received: from pjbpa10.prod.google.com ([2002:a17:90b:264a:b0:312:dbc:f731]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:903:298f:b0:233:ab04:27a with SMTP id d9443c01a7336-235e128b23amr51021535ad.53.1749059161671; Wed, 04 Jun 2025 10:46:01 -0700 (PDT) Date: Wed, 4 Jun 2025 10:45:36 -0700 In-Reply-To: <20250604174545.2853620-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: <20250604174545.2853620-1-irogers@google.com> X-Mailer: git-send-email 2.50.0.rc0.604.gd4ff7b7c86-goog Message-ID: <20250604174545.2853620-3-irogers@google.com> Subject: [PATCH v4 02/10] perf target: Separate parse_uid into its own function From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Dapeng Mi , Thomas Richter , Veronika Molnarova , Chun-Tse Shao , Leo Yan , Hao Ge , Howard Chu , Weilin Wang , Levi Yun , "Dr. David Alan Gilbert" , Gautam Menghani , Tengda Wu , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Allow parse_uid to be called without a struct target. Rather than have two errors, remove TARGET_ERRNO__USER_NOT_FOUND and use TARGET_ERRNO__INVALID_UID as the handling is identical. Signed-off-by: Ian Rogers --- tools/perf/util/target.c | 22 ++++++++++++---------- tools/perf/util/target.h | 3 ++- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/tools/perf/util/target.c b/tools/perf/util/target.c index 0f383418e3df..f3ad59ccfa99 100644 --- a/tools/perf/util/target.c +++ b/tools/perf/util/target.c @@ -94,15 +94,13 @@ enum target_errno target__validate(struct target *targe= t) return ret; } =20 -enum target_errno target__parse_uid(struct target *target) +uid_t parse_uid(const char *str) { struct passwd pwd, *result; char buf[1024]; - const char *str =3D target->uid_str; =20 - target->uid =3D UINT_MAX; if (str =3D=3D NULL) - return TARGET_ERRNO__SUCCESS; + return UINT_MAX; =20 /* Try user name first */ getpwnam_r(str, &pwd, buf, sizeof(buf), &result); @@ -115,16 +113,22 @@ enum target_errno target__parse_uid(struct target *ta= rget) int uid =3D strtol(str, &endptr, 10); =20 if (*endptr !=3D '\0') - return TARGET_ERRNO__INVALID_UID; + return UINT_MAX; =20 getpwuid_r(uid, &pwd, buf, sizeof(buf), &result); =20 if (result =3D=3D NULL) - return TARGET_ERRNO__USER_NOT_FOUND; + return UINT_MAX; } =20 - target->uid =3D result->pw_uid; - return TARGET_ERRNO__SUCCESS; + return result->pw_uid; +} + +enum target_errno target__parse_uid(struct target *target) +{ + target->uid =3D parse_uid(target->uid_str); + + return target->uid !=3D UINT_MAX ? TARGET_ERRNO__SUCCESS : TARGET_ERRNO__= INVALID_UID; } =20 /* @@ -142,7 +146,6 @@ static const char *target__error_str[] =3D { "BPF switch overriding UID", "BPF switch overriding THREAD", "Invalid User: %s", - "Problems obtaining information for user %s", }; =20 int target__strerror(struct target *target, int errnum, @@ -171,7 +174,6 @@ int target__strerror(struct target *target, int errnum, break; =20 case TARGET_ERRNO__INVALID_UID: - case TARGET_ERRNO__USER_NOT_FOUND: snprintf(buf, buflen, msg, target->uid_str); break; =20 diff --git a/tools/perf/util/target.h b/tools/perf/util/target.h index 2ee2cc30340f..e082bda990fb 100644 --- a/tools/perf/util/target.h +++ b/tools/perf/util/target.h @@ -48,12 +48,13 @@ enum target_errno { =20 /* for target__parse_uid() */ TARGET_ERRNO__INVALID_UID, - TARGET_ERRNO__USER_NOT_FOUND, =20 __TARGET_ERRNO__END, }; =20 enum target_errno target__validate(struct target *target); + +uid_t parse_uid(const char *str); enum target_errno target__parse_uid(struct target *target); =20 int target__strerror(struct target *target, int errnum, char *buf, size_t = buflen); --=20 2.50.0.rc0.604.gd4ff7b7c86-goog From nobody Fri Dec 19 02:16:18 2025 Received: from mail-pl1-f201.google.com (mail-pl1-f201.google.com [209.85.214.201]) (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 54486202961 for ; Wed, 4 Jun 2025 17:46:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749059165; cv=none; b=CvEh52WI4Vx7fAZ90QvOWWshT0raLzHISx1GQBd2/583snNfc+vWZ9nf/B+LmmFOLwlibm+GiJBWVCXty9bDlsuZhmpixpQhkfdVDV+BGuIAR+KQ+anayOguCmsQmhuCMiekYX0vODe3FjLGDBWovtu3AqgV164DMvq8pVxzJDc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749059165; c=relaxed/simple; bh=S9utMSb+whrJe0gkOQTuW/1uPCjCRXWgR0gLCJmW1jM=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=WVHH/0Z9G7D0zwrMQKt3ny+qAxWcvA2+vQWa8LFMCaCXWIeY0a1ELb7DAXKtsT4rMCHyOIKksNLwhGx+I1AUQNS4vzHjPRnDi5EZXiJqUQD4AMgrcHkmBehi6QJYlLWkkPRnS2mx+8ft9rCC5/0Pu5SHJ4m3h+Pzvzyn824TFOI= 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=NuSNGJaj; arc=none smtp.client-ip=209.85.214.201 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="NuSNGJaj" Received: by mail-pl1-f201.google.com with SMTP id d9443c01a7336-235842baba4so600255ad.3 for ; Wed, 04 Jun 2025 10:46:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1749059163; x=1749663963; darn=vger.kernel.org; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=1cGGU1BmGlXJ3HaRLeYSvwuRRXCYMA0JWJw6BA2U8Uw=; b=NuSNGJajoRQbwMwNS70QJbC8oxVtHXg4NTcTHkAF1987wWQZoe+J0UF3/SPLFLNrpj YIXe+xRafzUvrzajF7RTRPJQtI+HKRcOTIax5aYnvT9B43rUc2rh8FWiPujdVSQBL2hH HoLT5iiWhVZ9nR7ixaWbr7h3pS93PIwLBwvvUsuAEUZySgbs1CClNxHxFQq3QCOUfdIV ec9dxMcGT4uBVR0LuToyxihTaJWvGChgu/SdSzT9L5HumE+m/jOoxduTz0XQzOA6eSBT 0JRzzRJC9anLy7N/Z5pXfs8B73L9WUPy3TDufsJJyXj/MhYNfPajP4bEDFc3V9wxzXrV v/vQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749059163; x=1749663963; h=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=1cGGU1BmGlXJ3HaRLeYSvwuRRXCYMA0JWJw6BA2U8Uw=; b=EeJWZl8wMHynRnAyGF6a73skg/oSGU1aFdo1j0ujtWTLQ+RxsDqc0gQ/84y/nhiVcG tpIVgb6e6X9TSo5FiaxQo3WbsPTxZSxnjTUZyCHBhWGjTkUJltdk4NQY7l1GXLp7qkT7 20tmw5nje3LsAQwCW4OsgJoDSAkd6XhoX6rV+EFYfBMmyWw8oAfIeuxc0kSd/XGe6wog HsNTPmLNzCuo6CR7Z47AuX9l87esROmQfqLlrfUg5V4nyKRLq+awxjjIYDU8bs8OxuHQ ff2qmEJEqC+Qllws4F70iX5f6h8MUYLsCo/Jh0Q8myrc4priGRz1D1EYkcDQSJ/ts3Gk 5iSw== X-Forwarded-Encrypted: i=1; AJvYcCWRkKPu4CvaRNMIJKScz/hrvnSd6HsLiKh6DdWu1qkxV5NP4vEsmtfLvIRqsoWy28lSktAuCF1aDddxN8Y=@vger.kernel.org X-Gm-Message-State: AOJu0YwVZMN3yL4naH4yO2xvuYcWC4fNPjQ+6kj4q01wsGo0WFWk6vZP qmoizQqidqV43pPMAN3do4S1GxrFAPyaK5AZRbIEyUYJ6A2SLAvune7ssfZat2gN59CL4izeB4K 3vuJf15CIVA== X-Google-Smtp-Source: AGHT+IHhRGqORi2SjAeTCWDEHvCnqLh5w62KrOnK8fc8S8eL6+gX+0p9t0Koi7Jd79p+//XZSTY0BOXW1KwQ X-Received: from pgct1.prod.google.com ([2002:a05:6a02:5281:b0:b2c:3d70:9cd]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:903:2f92:b0:226:38ff:1d6a with SMTP id d9443c01a7336-235e111f38fmr49110935ad.7.1749059163573; Wed, 04 Jun 2025 10:46:03 -0700 (PDT) Date: Wed, 4 Jun 2025 10:45:37 -0700 In-Reply-To: <20250604174545.2853620-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: <20250604174545.2853620-1-irogers@google.com> X-Mailer: git-send-email 2.50.0.rc0.604.gd4ff7b7c86-goog Message-ID: <20250604174545.2853620-4-irogers@google.com> Subject: [PATCH v4 03/10] perf parse-events: Add parse_uid_filter helper From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Dapeng Mi , Thomas Richter , Veronika Molnarova , Chun-Tse Shao , Leo Yan , Hao Ge , Howard Chu , Weilin Wang , Levi Yun , "Dr. David Alan Gilbert" , Gautam Menghani , Tengda Wu , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add parse_uid_filter filter as a helper to parse_filter, that constructs a uid filter string. As uid filters don't work with tracepoint filters, add a is_possible_tp_filter function so the tracepoint filter isn't attempted for tracepoint evsels. Signed-off-by: Ian Rogers --- tools/perf/util/parse-events.c | 33 ++++++++++++++++++++++++++++++++- tools/perf/util/parse-events.h | 1 + 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index d96adf23dc94..7f34e602fc08 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -25,6 +25,7 @@ #include "pmu.h" #include "pmus.h" #include "asm/bug.h" +#include "ui/ui.h" #include "util/parse-branch-options.h" #include "util/evsel_config.h" #include "util/event.h" @@ -2561,6 +2562,12 @@ foreach_evsel_in_last_glob(struct evlist *evlist, return 0; } =20 +/* Will a tracepoint filter work for str or should a BPF filter be used? */ +static bool is_possible_tp_filter(const char *str) +{ + return strstr(str, "uid") =3D=3D NULL; +} + static int set_filter(struct evsel *evsel, const void *arg) { const char *str =3D arg; @@ -2573,7 +2580,7 @@ static int set_filter(struct evsel *evsel, const void= *arg) return -1; } =20 - if (evsel->core.attr.type =3D=3D PERF_TYPE_TRACEPOINT) { + if (evsel->core.attr.type =3D=3D PERF_TYPE_TRACEPOINT && is_possible_tp_f= ilter(str)) { if (evsel__append_tp_filter(evsel, str) < 0) { fprintf(stderr, "not enough memory to hold filter string\n"); @@ -2609,6 +2616,30 @@ int parse_filter(const struct option *opt, const cha= r *str, (const void *)str); } =20 +int parse_uid_filter(struct evlist *evlist, uid_t uid) +{ + struct option opt =3D { + .value =3D &evlist, + }; + char buf[128]; + int ret; + + snprintf(buf, sizeof(buf), "uid =3D=3D %d", uid); + ret =3D parse_filter(&opt, buf, /*unset=3D*/0); + if (ret) { + if (use_browser >=3D 1) { + /* + * Use ui__warning so a pop up appears above the + * underlying BPF error message. + */ + ui__warning("Failed to add UID filtering that uses BPF filtering.\n"); + } else { + fprintf(stderr, "Failed to add UID filtering that uses BPF filtering.\n= "); + } + } + return ret; +} + static int add_exclude_perf_filter(struct evsel *evsel, const void *arg __maybe_unused) { diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h index ab242f671031..46e5a01be61c 100644 --- a/tools/perf/util/parse-events.h +++ b/tools/perf/util/parse-events.h @@ -45,6 +45,7 @@ static inline int parse_events(struct evlist *evlist, con= st char *str, int parse_event(struct evlist *evlist, const char *str); =20 int parse_filter(const struct option *opt, const char *str, int unset); +int parse_uid_filter(struct evlist *evlist, uid_t uid); int exclude_perf(const struct option *opt, const char *arg, int unset); =20 enum parse_events__term_val_type { --=20 2.50.0.rc0.604.gd4ff7b7c86-goog From nobody Fri Dec 19 02:16:18 2025 Received: from mail-pj1-f74.google.com (mail-pj1-f74.google.com [209.85.216.74]) (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 4A1B5204689 for ; Wed, 4 Jun 2025 17:46:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.74 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749059167; cv=none; b=Ho7UEGkUhGP+s8MSrff5MsGHjQMk7n0Te76LtL54sbBMWngOmiyTMjqTASp9Nzf6ozXYDSV7NJFCLTtgVd2fWWiD7Am0btEAWUK/OfkSBwBF/56Kb4rlJQfLLD/CIM86M+BPcWbZg0R6H4POanY4BUnCaYiY/jvlGifgpvdvfbE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749059167; c=relaxed/simple; bh=Pr6uyNOCYDQtOIdkrEEBjYxHbHN2ZcnxheLKgXvILHI=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=Tn026U5aFNucWl+930qT4K6pbm2mIBPldQPhfgpOZjQblqfw/UPjsCYtsiy4tF5C17wk3F3gxcMb3ZS/TvBjrr+lsvh41cRyhVJj574afwa64mcLZISY0edF5ABSsjuc9aMLnqGDQRgzNOazIo0xryGU6KPmFfQ5iE0BQX8lCEA= 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=iVDLVAwc; arc=none smtp.client-ip=209.85.216.74 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="iVDLVAwc" Received: by mail-pj1-f74.google.com with SMTP id 98e67ed59e1d1-31171a736b2so154186a91.1 for ; Wed, 04 Jun 2025 10:46:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1749059165; x=1749663965; darn=vger.kernel.org; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=osXo3AqwK/4YO7kimxxv/q9KVIECdD745Jh5D5390RI=; b=iVDLVAwcmEppPf5aDxsk390schat4c0OKRO4W7rz3Q4L+lGVbABoIdDY/9w9GAYAgd 3ia8cUEYUGPkUIufU9js5BeUNk2AxgIZiss2/aTIWVZZUissYrFYf8zM7idiErSFMEAt V/o3Btn9oOeu2gI9FJ+VInIoZTwNdTR3uBPetaWaqSGZTQ4WuWeCJojQRVLIGJkr5DXv LpxnGo6xUbO+3FxhtO/Od2awlfS6GCDoJANSU1/gZI/idJdWPGiEUHt7YyXF9nxLAyPe RduuV6C5g8edbIMKfl5I6nNycHwyDf6wSRay4TcfLgT7QG0nKXM9bXWUmf50Sea4F2SJ 1v4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749059165; x=1749663965; h=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=osXo3AqwK/4YO7kimxxv/q9KVIECdD745Jh5D5390RI=; b=UUiN294uzXDqE8HHEUEOmR5FP/WbKDO4Fib9i+PNz6VOz/arXlNGkS8aSY9O1Ztohf GyiAmKHU/gd+XcIKWxXkZ3m1EffVDdhW1Ge9gB0QjrhYBQ4jLFl0XYkXE5ZxVdA1nTjH bgEPF25gwidRP3vdNCgLEyYDexRYpcIs3MlCPohDfS7esnzZG7zLmRPQk6yAdkeA5d0W l+UrDo22f7LbFIuwDtc4fT9vMSnfZoISTkY84ZSiwbLf6BFZNwH/O0L7nWYrBGbfdgmQ 5TToXcU3U4tP9e26/+TKbr9XXWLIAO9wFZf6NHEks0hXLqbCF72rOnXvwRL+d4V7Z9MI J75g== X-Forwarded-Encrypted: i=1; AJvYcCUv0+zWr9jx0yUqm5WnuTVg/qnpn4KwgbWYGtBbWm8ua6G2FeCkgCQpz3LnCigROIob6ruYKDWrFq2qjAs=@vger.kernel.org X-Gm-Message-State: AOJu0YwtdsyKbxu6Ffysex5veRhnH0BBKFQVb9eWOnjxaqOCUGxPNRoc yhZ++r4m7FyKJ+xnKPiR/Tr2khsJfGdbw2CPZH4fxujsH+XIKrItpvtDV3NBNkhrwtaoBAzRJk7 b9Y1sxiKogg== X-Google-Smtp-Source: AGHT+IGaJvKbsygH4nlibrH4C9ybgV0Y+hG1/QFJLM/QlJRX7V3i3wxQTU1yhbDG2f0xCgPzM5E/1IiYFrh1 X-Received: from pjg14.prod.google.com ([2002:a17:90b:3f4e:b0:311:a879:981f]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90a:c0f:b0:313:1769:eb49 with SMTP id 98e67ed59e1d1-3131769eb8cmr2917651a91.8.1749059165471; Wed, 04 Jun 2025 10:46:05 -0700 (PDT) Date: Wed, 4 Jun 2025 10:45:38 -0700 In-Reply-To: <20250604174545.2853620-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: <20250604174545.2853620-1-irogers@google.com> X-Mailer: git-send-email 2.50.0.rc0.604.gd4ff7b7c86-goog Message-ID: <20250604174545.2853620-5-irogers@google.com> Subject: [PATCH v4 04/10] perf record: Switch user option to use BPF filter From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Dapeng Mi , Thomas Richter , Veronika Molnarova , Chun-Tse Shao , Leo Yan , Hao Ge , Howard Chu , Weilin Wang , Levi Yun , "Dr. David Alan Gilbert" , Gautam Menghani , Tengda Wu , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Finding user processes by scanning /proc is inherently racy and results in perf_event_open failures. Use a BPF filter to drop samples where the uid doesn't match. Ensure adding the BPF filter forces system-wide. Signed-off-by: Ian Rogers --- tools/perf/builtin-record.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 8059bce85a51..0b566f300569 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -175,6 +175,7 @@ struct record { bool timestamp_boundary; bool off_cpu; const char *filter_action; + const char *uid_str; struct switch_output switch_output; unsigned long long samples; unsigned long output_max_size; /* =3D 0: unlimited */ @@ -3513,8 +3514,7 @@ static struct option __record_options[] =3D { "or ranges of time to enable events e.g. '-D 10-20,30-40'", record__parse_event_enable_time), OPT_BOOLEAN(0, "kcore", &record.opts.kcore, "copy /proc/kcore"), - OPT_STRING('u', "uid", &record.opts.target.uid_str, "user", - "user to profile"), + OPT_STRING('u', "uid", &record.uid_str, "user", "user to profile"), =20 OPT_CALLBACK_NOOPT('b', "branch-any", &record.opts.branch_stack, "branch any", "sample any taken branches", @@ -4256,19 +4256,24 @@ int cmd_record(int argc, const char **argv) ui__warning("%s\n", errbuf); } =20 - err =3D target__parse_uid(&rec->opts.target); - if (err) { - int saved_errno =3D errno; + if (rec->uid_str) { + uid_t uid =3D parse_uid(rec->uid_str); =20 - target__strerror(&rec->opts.target, err, errbuf, BUFSIZ); - ui__error("%s", errbuf); + if (uid =3D=3D UINT_MAX) { + ui__error("Invalid User: %s", rec->uid_str); + err =3D -EINVAL; + goto out; + } + err =3D parse_uid_filter(rec->evlist, uid); + if (err) + goto out; =20 - err =3D -saved_errno; - goto out; + /* User ID filtering implies system wide. */ + rec->opts.target.system_wide =3D true; } =20 - /* Enable ignoring missing threads when -u/-p option is defined. */ - rec->opts.ignore_missing_thread =3D rec->opts.target.uid !=3D UINT_MAX ||= rec->opts.target.pid; + /* Enable ignoring missing threads when -p option is defined. */ + rec->opts.ignore_missing_thread =3D rec->opts.target.pid; =20 evlist__warn_user_requested_cpus(rec->evlist, rec->opts.target.cpu_list); =20 --=20 2.50.0.rc0.604.gd4ff7b7c86-goog From nobody Fri Dec 19 02:16:18 2025 Received: from mail-pg1-f202.google.com (mail-pg1-f202.google.com [209.85.215.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 186E41F4199 for ; Wed, 4 Jun 2025 17:46:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749059169; cv=none; b=jV75vHcE04/XPAmqv9idNxU4WJiC5IV2XDCwcDPNY7KDViUuxYzpqLB6FzO/bYZ/sb/FNMcxGpK/8MpekKEjulIpvfnL1wnY1LT1MRQ/SKPF+BUanFaHczH4xU6QhPAwaKrgbJ9f3TjZyEOFvs1Cu2F1R43GkDYHbTgXVpkLY0c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749059169; c=relaxed/simple; bh=w7mIdHYnZOGol/D2dFdzxKVsmI/XyoD3LHHc9aNTcAU=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=EW4uQkJa9gDvYWcPxQJQ04PYFNcSQ23QSf3n37lIAaJ2YJhB1j5iQrO+Kl5D1ZUY5yWg3zr+3+R5K/xkAyXqMKWiia5q8pccFo5PataG4RZiiBsM1NRNM/lup4Gqzb6/KZZKLRCgKnWBO9O8QpRA0cCwt74/AVGsu2Vjhi1dT10= 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=MRXAODZN; arc=none smtp.client-ip=209.85.215.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="MRXAODZN" Received: by mail-pg1-f202.google.com with SMTP id 41be03b00d2f7-b2ede156ec4so59989a12.0 for ; Wed, 04 Jun 2025 10:46:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1749059167; x=1749663967; darn=vger.kernel.org; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=Q4nC0yFLc46sxQrP9IOJa66NsAsdDZBCoBLNutFpXGQ=; b=MRXAODZNjSP7X1Saah4zSrAk2kbb3GuAAwQoPdDYWXHGmWLtWq+swdJdhXWpKUlMMS 32T6p/ZZQ5Gagr7CsfCYiQOLlr4DBMxRXwjAzqnW3/jRKl8gk0HpuZ+khXvb3fjmoqA3 l6aHHyv4Uif14BFDPWltlsM3arznHDLfEgrxGTapDrmcuyoK4wKz8/U2nfQCHQV+Sc8w nBZ92doOqWMXUb7zl8U9QNP9PDqpKIdleNTdT1c9zlm7wpT4t9GIuYj2oLOv6rR5h1zV RsMabPHYF+13wLk/bDV2LBeqq3Foju5nHFQjPbQNHR9pAGfCKxoTVRCZ9gKp9/zZIoWq cVkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749059167; x=1749663967; h=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=Q4nC0yFLc46sxQrP9IOJa66NsAsdDZBCoBLNutFpXGQ=; b=tI8cxwGEaDitx7g0KTMwUjlwEcNjzBPTCIKnunxrsQdQY2TbU+pBhWvHcdp2tDHwlN j+vWCdAHkVWLxDIrDDYK5UpHNb5nJUcjSaxL2rfKL1dLVq8jR0hXmR3OgrgQaBjP6lYS /8mjctcHlCnOtiB3ZrBRDtsgWTN/u91pQEyQhrdNIsdf11E9IeTc7V+qvYXUp9FcLr8F 0/JJ3DjMu6v8SdW8t6h9sLXGoVSCou3C5IMqVHx2zreYt2RTVInKbvGfAHvxo+MZtzq7 xRkvmlapBjf54IaKaZSTToI7SG9osCYOT+u10HocOrzDH+M+ktf1n2liWsi8UO6WTgUG lOgA== X-Forwarded-Encrypted: i=1; AJvYcCU045M2mGPyICLJvsGKYMuMOVJjGoiQW9a49KdeqElxOdHy3V2IsrMBmDkr/YNAp7wNR4mjmxCHHGSLzPg=@vger.kernel.org X-Gm-Message-State: AOJu0Yw1jvHn2D6Fu612tSrFdqQrV7toBRpg72f532GYbXZD6Z0mrCig EZrvaTc8fMozwX/H0DgLq7i6VXic3ekQ7eniKc+LMQqkFDQ2IrxoFjmdP9Q6Vt95CSlHhX3wT4B qDugHKatlLg== X-Google-Smtp-Source: AGHT+IHezvR+eTPfCS3Vq8TwC31u+IqeQ3bdfYHNH41ei/61+xbUnxM56xS7y/HR/6GQ10xXZnPrjjh9vTUm X-Received: from pgbfe26.prod.google.com ([2002:a05:6a02:289a:b0:b2c:40c4:8bb4]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a21:328b:b0:20b:9774:ac6c with SMTP id adf61e73a8af0-21d22aa2f8bmr5219599637.5.1749059167416; Wed, 04 Jun 2025 10:46:07 -0700 (PDT) Date: Wed, 4 Jun 2025 10:45:39 -0700 In-Reply-To: <20250604174545.2853620-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: <20250604174545.2853620-1-irogers@google.com> X-Mailer: git-send-email 2.50.0.rc0.604.gd4ff7b7c86-goog Message-ID: <20250604174545.2853620-6-irogers@google.com> Subject: [PATCH v4 05/10] perf tests record: Add basic uid filtering test From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Dapeng Mi , Thomas Richter , Veronika Molnarova , Chun-Tse Shao , Leo Yan , Hao Ge , Howard Chu , Weilin Wang , Levi Yun , "Dr. David Alan Gilbert" , Gautam Menghani , Tengda Wu , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Based on the system-wide test with changes around how failure is handled as BPF permissions are a bigger issue than perf event paranoia. Signed-off-by: Ian Rogers --- tools/perf/tests/shell/record.sh | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/tools/perf/tests/shell/record.sh b/tools/perf/tests/shell/reco= rd.sh index 587f62e34414..2022a4f739be 100755 --- a/tools/perf/tests/shell/record.sh +++ b/tools/perf/tests/shell/record.sh @@ -231,6 +231,31 @@ test_cgroup() { echo "Cgroup sampling test [Success]" } =20 +test_uid() { + echo "Uid sampling test" + if ! perf record -aB --synth=3Dno --uid "$(id -u)" -o "${perfdata}" ${te= stprog} \ + > "${script_output}" 2>&1 + then + if grep -q "libbpf.*EPERM" "${script_output}" + then + echo "Uid sampling [Skipped permissions]" + return + else + echo "Uid sampling [Failed to record]" + err=3D1 + # cat "${script_output}" + return + fi + fi + if ! perf report -i "${perfdata}" -q | grep -q "${testsym}" + then + echo "Uid sampling [Failed missing output]" + err=3D1 + return + fi + echo "Uid sampling test [Success]" +} + test_leader_sampling() { echo "Basic leader sampling test" if ! perf record -o "${perfdata}" -e "{cycles,cycles}:Su" -- \ @@ -345,6 +370,7 @@ test_system_wide test_workload test_branch_counter test_cgroup +test_uid test_leader_sampling test_topdown_leader_sampling test_precise_max --=20 2.50.0.rc0.604.gd4ff7b7c86-goog From nobody Fri Dec 19 02:16:18 2025 Received: from mail-pj1-f73.google.com (mail-pj1-f73.google.com [209.85.216.73]) (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 E7C1920F079 for ; Wed, 4 Jun 2025 17:46:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749059171; cv=none; b=u2odwYRVXO70LqRdSHzxkrpnNOdbpac706XqMHQ9bIKcirl4nHlddDH6K7QrmbWvhN02oeRTuNFdNxnh30qfW1Wd0FCi24ZquBRrrNeN1l9Rk2vV3BX0RVlCqut1FzBOrhhZw47bzZ43cbLF3/0JEVOhhBgk7SZwFF6idXLshts= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749059171; c=relaxed/simple; bh=d9juix98O43SIeDaPmSOphkP7ZXR2ZbNDk+z7RkJZkk=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=dmVpAwU/IIwrBSPppDONzPvTkfkr9/oeYmq5D1TSFSjMa6HoEKthURaSwbM2Wnhx/6ha3+Lm24cPQkAKbArvbiJlJuWoY6+OqqEQE3/T+KVQv8IKcNArhPnZlCc73ABMmViMuJXdKfOzczYgqrPbJhTP17EcSW4oh1Plws2+NGM= 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=ygM3e3pH; arc=none smtp.client-ip=209.85.216.73 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="ygM3e3pH" Received: by mail-pj1-f73.google.com with SMTP id 98e67ed59e1d1-310c5c2c38cso96899a91.1 for ; Wed, 04 Jun 2025 10:46:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1749059169; x=1749663969; darn=vger.kernel.org; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=ZAlx8zNG9Ixb3Z/jfW3REJxbhMy4ISbpvyCxG91X8vI=; b=ygM3e3pHN/3DbEtIjcwSC1D+jhrnFVW/5+eD3pRX76HA6PBlvfK7Z+gaf2Lzb0BDAh qN3aFrfS1x65ka9FLPhy/iM3g/exN7cKupf/91iH3doam+h3EvDWckxZ2nX2cK/q6x3D KOjsJqWbYJdAUjZUk2xM+bf+9wKVKYR7nxGUFzQQNJg7ZQGi4tZ7LB1vqQpB2KKu7ueh f6pfV8AgLylHxBnDdM4F0h8eh+gPT5Mvl1jQL+Pp8TRQ0OUVWLY/V3DRvwRBkHxwnp6I DF/tp26onCW2EO3lCKtf8Z4tYwATno89mSrwb4DL93mVRbXjVGNJZ+1TJBvcxecdp8tC mAsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749059169; x=1749663969; h=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=ZAlx8zNG9Ixb3Z/jfW3REJxbhMy4ISbpvyCxG91X8vI=; b=Ky//6bLCE93WRNIcBNXW87IoXsdZx3UkzT0r5SruL1UqCrzoYW6WuSfjuc1EUeNM92 XroWLt8mEiJJI6y42wLR5G5M5Cb9V43+XqBvvT5BctYJ1uICA3vPOzGk4/jYqrSjcAcs klP7b8tWO5+bSVtyrFzJyBcrWuH8J8Vrl9yqHE5CKGGSRYfEVvSBmsaKfDpvdIY9Kmwb a8N6oVs2ljSKI0LBW1Ef1S4RjPJnk9GbujBcIWoa8QLweSTvkMETPBlDpuw2/aRQozHa 1dFHTVpRbGhNxjy7LB2zih9WRHKoHcfQeeW45mWs3+7URqepbq4KFk7E3VTpO33beJm/ 1evg== X-Forwarded-Encrypted: i=1; AJvYcCXMpgSgiSDo35L0e2gpAJTBj2DddJN/XP9PmWbnGlCQs4I7EPvP7GlGGQiTyv6fUX79BIDdhE3/YkUYtdg=@vger.kernel.org X-Gm-Message-State: AOJu0YyliY36byPovjZovVhy7ZKe5M7fNzxzcwwCDlspJt+56NtZCXfQ /pRDTXhoBfQJ6yIWUIF/U6sLXEopbfOYj0qhTwfrN7GFGAoFJHVQxJLnrGe/3+jPzFffGbaP5zF BloczUIvgkw== X-Google-Smtp-Source: AGHT+IHUp4wLf3y4OcqJf4camFo5SZWceEct0rB/6bCOouHb4ABfjjX1omDtqmZJ8nOhmTxqcz04b2Rgomb8 X-Received: from pjbnb5.prod.google.com ([2002:a17:90b:35c5:b0:312:1900:72e2]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:3c12:b0:311:eb85:96f0 with SMTP id 98e67ed59e1d1-3130cd4d794mr5696673a91.29.1749059169329; Wed, 04 Jun 2025 10:46:09 -0700 (PDT) Date: Wed, 4 Jun 2025 10:45:40 -0700 In-Reply-To: <20250604174545.2853620-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: <20250604174545.2853620-1-irogers@google.com> X-Mailer: git-send-email 2.50.0.rc0.604.gd4ff7b7c86-goog Message-ID: <20250604174545.2853620-7-irogers@google.com> Subject: [PATCH v4 06/10] perf top: Switch user option to use BPF filter From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Dapeng Mi , Thomas Richter , Veronika Molnarova , Chun-Tse Shao , Leo Yan , Hao Ge , Howard Chu , Weilin Wang , Levi Yun , "Dr. David Alan Gilbert" , Gautam Menghani , Tengda Wu , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Finding user processes by scanning /proc is inherently racy and results in perf_event_open failures. Use a BPF filter to drop samples where the uid doesn't match. Signed-off-by: Ian Rogers --- tools/perf/builtin-top.c | 22 ++++++++++++---------- tools/perf/util/top.c | 4 ++-- tools/perf/util/top.h | 1 + 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c index 7b6cde87d2af..051ded5ba9ba 100644 --- a/tools/perf/builtin-top.c +++ b/tools/perf/builtin-top.c @@ -643,7 +643,7 @@ static void *display_thread_tui(void *arg) */ evlist__for_each_entry(top->evlist, pos) { struct hists *hists =3D evsel__hists(pos); - hists->uid_filter_str =3D top->record_opts.target.uid_str; + hists->uid_filter_str =3D top->uid_str; } =20 ret =3D evlist__tui_browse_hists(top->evlist, help, &hbt, top->min_percen= t, @@ -1571,7 +1571,7 @@ int cmd_top(int argc, const char **argv) "Add prefix to source file path names in programs (with --prefix-str= ip)"), OPT_STRING(0, "prefix-strip", &annotate_opts.prefix_strip, "N", "Strip first N entries of source file path name in programs (with --= prefix)"), - OPT_STRING('u', "uid", &target->uid_str, "user", "user to profile"), + OPT_STRING('u', "uid", &top.uid_str, "user", "user to profile"), OPT_CALLBACK(0, "percent-limit", &top, "percent", "Don't show entries under that percent", parse_percent_limit), OPT_CALLBACK(0, "percentage", NULL, "relative|absolute", @@ -1762,15 +1762,17 @@ int cmd_top(int argc, const char **argv) ui__warning("%s\n", errbuf); } =20 - status =3D target__parse_uid(target); - if (status) { - int saved_errno =3D errno; - - target__strerror(target, status, errbuf, BUFSIZ); - ui__error("%s\n", errbuf); + if (top.uid_str) { + uid_t uid =3D parse_uid(top.uid_str); =20 - status =3D -saved_errno; - goto out_delete_evlist; + if (uid =3D=3D UINT_MAX) { + ui__error("Invalid User: %s", top.uid_str); + status =3D -EINVAL; + goto out_delete_evlist; + } + status =3D parse_uid_filter(top.evlist, uid); + if (status) + goto out_delete_evlist; } =20 if (target__none(target)) diff --git a/tools/perf/util/top.c b/tools/perf/util/top.c index 4db3d1bd686c..b06e10a116bb 100644 --- a/tools/perf/util/top.c +++ b/tools/perf/util/top.c @@ -88,9 +88,9 @@ size_t perf_top__header_snprintf(struct perf_top *top, ch= ar *bf, size_t size) else if (target->tid) ret +=3D SNPRINTF(bf + ret, size - ret, " (target_tid: %s", target->tid); - else if (target->uid_str !=3D NULL) + else if (top->uid_str !=3D NULL) ret +=3D SNPRINTF(bf + ret, size - ret, " (uid: %s", - target->uid_str); + top->uid_str); else ret +=3D SNPRINTF(bf + ret, size - ret, " (all"); =20 diff --git a/tools/perf/util/top.h b/tools/perf/util/top.h index 4c5588dbb131..04ff926846be 100644 --- a/tools/perf/util/top.h +++ b/tools/perf/util/top.h @@ -48,6 +48,7 @@ struct perf_top { const char *sym_filter; float min_percent; unsigned int nr_threads_synthesize; + const char *uid_str; =20 struct { struct ordered_events *in; --=20 2.50.0.rc0.604.gd4ff7b7c86-goog From nobody Fri Dec 19 02:16:18 2025 Received: from mail-ot1-f73.google.com (mail-ot1-f73.google.com [209.85.210.73]) (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 30ED2214223 for ; Wed, 4 Jun 2025 17:46:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.73 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749059174; cv=none; b=C63Ln8CX108ejpE1x/y5eHGaMUBYw/uFU0FvaX82AsPc0UyYvtwXP9MmgXTG+V/11j9zO7Pp5IKDEqs2G34E1wL17ORrv+58p7IvGVThJ/WbDoU8yJ3NkTrMOTYxNpwNmioebdeSlCapvzidBb42Nh0KBuTyfzYxd1O0gXnK+wE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749059174; c=relaxed/simple; bh=8RJTcbaavtRa5sssuUXNrJxuZWZPCsk1MDl7ZbD+Gww=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=nMr5bKZm/Rx5sPuxHBwVAVsCpqAVkIU0bNV+ylBGJHJF2k0LMuHad7lqhGARRJu1FcKGshpT2HACtdlh6vyTDd7J+BAns2QDBqsoYR4NrWfDX0jiAN9FMsmtR3gUPpJaUoxJKwtb5J4GbC0+SIz2X1wY5uHR6i7bg5DMlValz/Y= 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=zlPWCFzW; arc=none smtp.client-ip=209.85.210.73 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="zlPWCFzW" Received: by mail-ot1-f73.google.com with SMTP id 46e09a7af769-72c316b7bfbso5675a34.1 for ; Wed, 04 Jun 2025 10:46:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1749059171; x=1749663971; darn=vger.kernel.org; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=i9yNfn5eRAho4EtZBNKkQLz+u3xqVjqDGPhEDNh7DTo=; b=zlPWCFzW9bZLo1g3Lwjsbw7mt6NYV9vAqHJtPeYRcZpQRZGnBAAfsMFLMUje4y9DXA sNbY9+sMjbtmkV8lc9XYtiViYYDJKLptcjHJvNfpaPs4PktpgQnejhrvo+1+QD/Q98Mz b1BAOo712tlyQnMmPcSe9TXY47PujMzrgncheIMDGlEd4V83Zvg8sAAjN2lSFrKCa6TR yhbvaHpXf2uiiXHuyVnfFBh2XKhyvc/BtYID1SER4f02d37umvvORGgfDdDqno2g/lbq acaidgsBXJ5R5cRWzNZuQcKrh4hoKO8FhnqFjq9FH8mp/CbGsRnBnfJtG7jiQASLzpiF AbSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749059171; x=1749663971; h=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=i9yNfn5eRAho4EtZBNKkQLz+u3xqVjqDGPhEDNh7DTo=; b=hzpeO7jKPFiTeNE4W+hOVHsg1aHJ/qsiqK2QKuoFEduY4IVJCopCqNGi3ahnC6qadx TV0PBrswOL9PNjOVpExQBnVNySVPotjxy15K44kx1dQqns3vSy8Tl+p9WTA3lCRZlJC/ 3r8p6g1vrO62/vI+ZxaBUS++gX5NBlPq+5Osx3u+J0lnpXWnVFWmmqktHvVVa+sjEFu8 2jd0kkQXb7brKUi6rFogFqFpeTzf0li6Adi+cpIjvcoOL7FSe9BM6JO/x1hVF4vS61tK 7ZmxRYpFw32qQ8k1sv6KHKCqQQdSFL1M9J+69xHH0OtL4awrwZYB0zYHfZb/l38NAfUR PGog== X-Forwarded-Encrypted: i=1; AJvYcCWtApMiqqDB5L7RMNC7//vzwPVCV+BghSR/ZbGKyoMqCjmJ5pRaVnJOd2fbXn/v/pye5Kh5OwE/omSQA18=@vger.kernel.org X-Gm-Message-State: AOJu0YzhOHA+BA8jsjGuxFmzefzeiACv/xk7D5pekSUrcOldhnST1f33 qexri5lixAYFkDR/B+ptjwGfDe4gfluoLeuixcVeSsRixVbpXKkkxb3SpTlV6d2KuXWDGueIIpU bfdJpe+Zodw== X-Google-Smtp-Source: AGHT+IE4gdMazXA+ZZ6u3qKDsWCX/dGkg5TUamz7U+qJ4v0aidP3AWFrx6m+vMK2PI1EgHELPCzVbt1PxPI4 X-Received: from oabky6.prod.google.com ([2002:a05:6871:4046:b0:2b8:45b4:8afc]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6870:8a2a:b0:29e:503a:7ea3 with SMTP id 586e51a60fabf-2e9bf641bb8mr2664304fac.36.1749059171203; Wed, 04 Jun 2025 10:46:11 -0700 (PDT) Date: Wed, 4 Jun 2025 10:45:41 -0700 In-Reply-To: <20250604174545.2853620-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: <20250604174545.2853620-1-irogers@google.com> X-Mailer: git-send-email 2.50.0.rc0.604.gd4ff7b7c86-goog Message-ID: <20250604174545.2853620-8-irogers@google.com> Subject: [PATCH v4 07/10] perf trace: Switch user option to use BPF filter From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Dapeng Mi , Thomas Richter , Veronika Molnarova , Chun-Tse Shao , Leo Yan , Hao Ge , Howard Chu , Weilin Wang , Levi Yun , "Dr. David Alan Gilbert" , Gautam Menghani , Tengda Wu , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Finding user processes by scanning /proc is inherently racy and results in perf_event_open failures. Use a BPF filter to drop samples where the uid doesn't match. Ensure adding the BPF filter forces system-wide. Signed-off-by: Ian Rogers --- tools/perf/builtin-trace.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index 2ab1b8e05ad3..4bb062b96f51 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -236,6 +236,7 @@ struct trace { struct ordered_events data; u64 last; } oe; + const char *uid_str; }; =20 static void trace__load_vmlinux_btf(struct trace *trace __maybe_unused) @@ -4412,8 +4413,8 @@ static int trace__run(struct trace *trace, int argc, = const char **argv) evlist__add(evlist, pgfault_min); } =20 - /* Enable ignoring missing threads when -u/-p option is defined. */ - trace->opts.ignore_missing_thread =3D trace->opts.target.uid !=3D UINT_MA= X || trace->opts.target.pid; + /* Enable ignoring missing threads when -p option is defined. */ + trace->opts.ignore_missing_thread =3D trace->opts.target.pid; =20 if (trace->sched && evlist__add_newtp(evlist, "sched", "sched_stat_runtime", trace__sched= _stat_runtime)) @@ -5445,8 +5446,7 @@ int cmd_trace(int argc, const char **argv) "child tasks do not inherit counters"), OPT_CALLBACK('m', "mmap-pages", &trace.opts.mmap_pages, "pages", "number of mmap data pages", evlist__parse_mmap_pages), - OPT_STRING('u', "uid", &trace.opts.target.uid_str, "user", - "user to profile"), + OPT_STRING('u', "uid", &trace.uid_str, "user", "user to profile"), OPT_CALLBACK(0, "duration", &trace, "float", "show only events with duration > N.M ms", trace__set_duration), @@ -5804,11 +5804,19 @@ int cmd_trace(int argc, const char **argv) goto out_close; } =20 - err =3D target__parse_uid(&trace.opts.target); - if (err) { - target__strerror(&trace.opts.target, err, bf, sizeof(bf)); - fprintf(trace.output, "%s", bf); - goto out_close; + if (trace.uid_str) { + uid_t uid =3D parse_uid(trace.uid_str); + + if (uid =3D=3D UINT_MAX) { + ui__error("Invalid User: %s", trace.uid_str); + err =3D -EINVAL; + goto out_close; + } + err =3D parse_uid_filter(trace.evlist, uid); + if (err) + goto out_close; + + trace.opts.target.system_wide =3D true; } =20 if (!argc && target__none(&trace.opts.target)) --=20 2.50.0.rc0.604.gd4ff7b7c86-goog From nobody Fri Dec 19 02:16:18 2025 Received: from mail-pf1-f202.google.com (mail-pf1-f202.google.com [209.85.210.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 8FA22221FB2 for ; Wed, 4 Jun 2025 17:46:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749059176; cv=none; b=TCKdqaiueQGh5JQY7KRCQ/821cYFpce0KDV9Alad+Md0pXoTckZ49kbWUZuzVHBvU5BwGIwx9B0snsBBDSrdbWsBwLI4owQpQx+/aQ/u7j3Vo2an/ENJtA/1ZGMFKC31TjbSjkli89egWw5eWHDbiX0Lu2w0YbXHDkpodxGYe8c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749059176; c=relaxed/simple; bh=dHzaMbefGtUz9d2v361l8pFL/wSt8FJRI3z4e3U91Xw=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=VA/3OpY69LXB9FFsJWDc0S9tDVPaZgMJHKrjR0vGupAorC910YS3qhP1bUZtCDCZ47XF05e1rHKnQ+1YtZnuf//IbHqrsf4ok/dFfzcssppHKCDdJ6yVSJNtcCNC14zdFal4WTzEr9y2b3BU5bL4dogTct32R3szSCF04JiMGcE= 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=3sMelFos; arc=none smtp.client-ip=209.85.210.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="3sMelFos" Received: by mail-pf1-f202.google.com with SMTP id d2e1a72fcca58-740270e168aso110602b3a.1 for ; Wed, 04 Jun 2025 10:46:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1749059173; x=1749663973; darn=vger.kernel.org; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=0E+HpHSoytdzCXhtaWooQBDGQQ29joWOWrbhKZJfAKM=; b=3sMelFosVbjhs3g2oWpsrBrfzgAto9TiGkm9w2KnjA0hvkEEerBX/ANXkVtQkcKiz3 dSTsKKcxt0k9afV9QTHJGS1sicixc9Ouj2lfHvb8leEw8TKbt3mxOCeTREE3TNo2Z8dH 3XGzBp3DWRIo6O/LioL6aQsbm+17ISxDXmArIlm89AwSYAsoaaXYJ/2GB+HHonu2EjQx QZz/2ablYdAd5OF+8vS1ati2MxDpPGx9hB8jD5JK0zVrMu5Yxg8GL+sm/8x5cWa9QAEt Jkr4JX6g9FyoC4x/pKAGIdTrHwAt1gYeJu+EySWs83mTHKTUYcVQ//e0z0unvAbhXPx5 bd+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749059173; x=1749663973; h=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=0E+HpHSoytdzCXhtaWooQBDGQQ29joWOWrbhKZJfAKM=; b=WlaU7KO7EowtgqUlmcUHV+7w1zQeXNUor2prQ94u+EQ//j/NokmI3GIu4FgZnNBxaU dDZ7IEzYIWwO9bLi1wnIl8v2lflLZMF4mmAnwjPCQuCkSk85np+KXiS5TDQWUsV38Y5C 3EP5nLGzDPZykt8EgJ625xrlsSLHNIarKJhIrBAV6NOzgm8guc23yGWyqeGpgcEXVyCQ lP9YzqYxzj0cjvOl0Qqr5nH4Sg9dXC8kZrAhhiWzoYms99puhwJGuX3/6GIWvBRF+1hh 0HbOtfYH7GxaGzEuUAcjl26sLtncMGrAMXvscwP/oUJQtDpSSJrmYJQuy1FkEUnv2oZP aCwQ== X-Forwarded-Encrypted: i=1; AJvYcCU/LgoVznhGN3OslWJJdN9KCLy1O0XSmZM6FmzeWKaL6qYL3qPovXtI5o0L1Db8bSjCzyvK0mMWFwbPKrs=@vger.kernel.org X-Gm-Message-State: AOJu0YwrxXbQamuRDvsqRBaLoKemCQjECTlwj9jMzjawqDhCuGOhv9Yu R07v06yKZbV2rZeAnhE5m33hjR+a6VYLKjWcHP8CeJV82Q4e20PfKIbytaBMvTUZToRogZcvVm7 6qSnoa0IUBQ== X-Google-Smtp-Source: AGHT+IH5n1tYBLYem5kFcijv1sTEBP7t8TJ17INcbQ/3M8b4vkg65AehKSeRUnE6Wp2T+YtUgx/2F1npQi72 X-Received: from pfbfp12.prod.google.com ([2002:a05:6a00:608c:b0:746:2747:e782]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a05:6a21:6e48:b0:206:a9bd:a3a3 with SMTP id adf61e73a8af0-21d22cda336mr4789909637.24.1749059172883; Wed, 04 Jun 2025 10:46:12 -0700 (PDT) Date: Wed, 4 Jun 2025 10:45:42 -0700 In-Reply-To: <20250604174545.2853620-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: <20250604174545.2853620-1-irogers@google.com> X-Mailer: git-send-email 2.50.0.rc0.604.gd4ff7b7c86-goog Message-ID: <20250604174545.2853620-9-irogers@google.com> Subject: [PATCH v4 08/10] perf bench evlist-open-close: Switch user option to use BPF filter From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Dapeng Mi , Thomas Richter , Veronika Molnarova , Chun-Tse Shao , Leo Yan , Hao Ge , Howard Chu , Weilin Wang , Levi Yun , "Dr. David Alan Gilbert" , Gautam Menghani , Tengda Wu , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Finding user processes by scanning /proc is inherently racy and results in perf_event_open failures. Use a BPF filter to drop samples where the uid doesn't match. Signed-off-by: Ian Rogers --- tools/perf/bench/evlist-open-close.c | 36 ++++++++++++++++------------ 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/tools/perf/bench/evlist-open-close.c b/tools/perf/bench/evlist= -open-close.c index 79cedcf94a39..bfaf50e4e519 100644 --- a/tools/perf/bench/evlist-open-close.c +++ b/tools/perf/bench/evlist-open-close.c @@ -57,7 +57,7 @@ static int evlist__count_evsel_fds(struct evlist *evlist) return cnt; } =20 -static struct evlist *bench__create_evlist(char *evstr) +static struct evlist *bench__create_evlist(char *evstr, const char *uid_st= r) { struct parse_events_error err; struct evlist *evlist =3D evlist__new(); @@ -78,6 +78,18 @@ static struct evlist *bench__create_evlist(char *evstr) goto out_delete_evlist; } parse_events_error__exit(&err); + if (uid_str) { + uid_t uid =3D parse_uid(uid_str); + + if (uid =3D=3D UINT_MAX) { + pr_err("Invalid User: %s", uid_str); + ret =3D -EINVAL; + goto out_delete_evlist; + } + ret =3D parse_uid_filter(evlist, uid); + if (ret) + goto out_delete_evlist; + } ret =3D evlist__create_maps(evlist, &opts.target); if (ret < 0) { pr_err("Not enough memory to create thread/cpu maps\n"); @@ -117,10 +129,10 @@ static int bench__do_evlist_open_close(struct evlist = *evlist) return 0; } =20 -static int bench_evlist_open_close__run(char *evstr) +static int bench_evlist_open_close__run(char *evstr, const char *uid_str) { // used to print statistics only - struct evlist *evlist =3D bench__create_evlist(evstr); + struct evlist *evlist =3D bench__create_evlist(evstr, uid_str); double time_average, time_stddev; struct timeval start, end, diff; struct stats time_stats; @@ -142,7 +154,7 @@ static int bench_evlist_open_close__run(char *evstr) =20 for (i =3D 0; i < iterations; i++) { pr_debug("Started iteration %d\n", i); - evlist =3D bench__create_evlist(evstr); + evlist =3D bench__create_evlist(evstr, uid_str); if (!evlist) return -ENOMEM; =20 @@ -206,6 +218,7 @@ static char *bench__repeat_event_string(const char *evs= tr, int n) =20 int bench_evlist_open_close(int argc, const char **argv) { + const char *uid_str =3D NULL; const struct option options[] =3D { OPT_STRING('e', "event", &event_string, "event", "event selector. use 'perf list' to list available events"), @@ -221,7 +234,7 @@ int bench_evlist_open_close(int argc, const char **argv) "record events on existing process id"), OPT_STRING('t', "tid", &opts.target.tid, "tid", "record events on existing thread id"), - OPT_STRING('u', "uid", &opts.target.uid_str, "user", "user to profile"), + OPT_STRING('u', "uid", &uid_str, "user", "user to profile"), OPT_BOOLEAN(0, "per-thread", &opts.target.per_thread, "use per-thread mm= aps"), OPT_END() }; @@ -245,15 +258,8 @@ int bench_evlist_open_close(int argc, const char **arg= v) goto out; } =20 - err =3D target__parse_uid(&opts.target); - if (err) { - target__strerror(&opts.target, err, errbuf, sizeof(errbuf)); - pr_err("%s", errbuf); - goto out; - } - - /* Enable ignoring missing threads when -u/-p option is defined. */ - opts.ignore_missing_thread =3D opts.target.uid !=3D UINT_MAX || opts.targ= et.pid; + /* Enable ignoring missing threads when -p option is defined. */ + opts.ignore_missing_thread =3D opts.target.pid; =20 evstr =3D bench__repeat_event_string(event_string, nr_events); if (!evstr) { @@ -261,7 +267,7 @@ int bench_evlist_open_close(int argc, const char **argv) goto out; } =20 - err =3D bench_evlist_open_close__run(evstr); + err =3D bench_evlist_open_close__run(evstr, uid_str); =20 free(evstr); out: --=20 2.50.0.rc0.604.gd4ff7b7c86-goog From nobody Fri Dec 19 02:16:18 2025 Received: from mail-pg1-f201.google.com (mail-pg1-f201.google.com [209.85.215.201]) (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 8D3B422A4EB for ; Wed, 4 Jun 2025 17:46:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749059177; cv=none; b=PTf0Mlrr4BKFM/BYw79D8hAinXlH3CLGB5Jl1be60Gx4JAXnf6blL3uwzx/Il6qqQEj/Z3jYkDIwE0iXOrLAzjIg4pNKKYMzEzFVNxnS6n4Fr91lTPwwWoAIQxAv3dDDXznuFUc1NSADj+ENHg5v10uXVFvNJiUPwdGg+ZFwddk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749059177; c=relaxed/simple; bh=8UV4w91JqgpYZ207NgqO7SC2753UshA65VF2bcTJhFE=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=JTfhjyc/4nN4pD1TeLnD/H1P2t219KxSXkEub4NPnjVm8FX7M0Azfbt8fR0/BvJs8WQCs4iUptrux+q/IVXABMVtpN9smg/F0bWJeTTJculL7ywjEnGBTxmU2Ntz9Rq+XnVYF82SLu1SCt6Qlfno9RAqRApKAfRZ73zyChbZQa8= 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=fBvfOl4I; arc=none smtp.client-ip=209.85.215.201 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="fBvfOl4I" Received: by mail-pg1-f201.google.com with SMTP id 41be03b00d2f7-b2eea1c2e97so23722a12.2 for ; Wed, 04 Jun 2025 10:46:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1749059175; x=1749663975; darn=vger.kernel.org; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=n/MZvKkzjhaHk9oHd4qdgkJl4s3RS0c1LOc60+L67is=; b=fBvfOl4I+F7/Pda8BfpIOfLJncfwpAr1g2ox+3oHSb6+qCfzSnWD+Ka089PQMJ05Dc NaSdEAfgdQHaerwN3SJ0/P/FBd6sP/TGq5tRK7LbtOnsT6yrISiK+vdKNz1XtGbVgUGh dDaePH/jsqwgW/FsX4or4BiSao+Q+Ye571Q3ptdAqql83A0TMUf6t0hu/b7BcGmGp2Mm 19zlt7BLUALb3Ga2Vw47YdYMWUU+5Hz1DuHevRMKlsJObXELMaUVcAI4l/p8+LL3b2NA qvFxJxe7oZ+MOmjFnKUX+qUfncs+GnVxu6SaADMmfoEpKKEbE3yBnqdcbd3ZLR3MMW2J mxrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749059175; x=1749663975; h=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=n/MZvKkzjhaHk9oHd4qdgkJl4s3RS0c1LOc60+L67is=; b=kXSFvWzeFYvaEiKdGVnvtrgsvcHanZOCiwfflb4d3i9g9e7QIwxOHZMgpg+36q2L/U Ln1VhT7c0Is7vXrse5Hjj4yUgAEfhHsCnyPOPFVsJry+L0ij+5LYCFtYbnRE18ZLQonN ZQ3QtEjE0VEqKGhrsfKXC5TpOScveh05mhIJrbVaFLXTcZgd79RtKXIKS9wi7RHEkt0H lJKx6tS4L0ij6HMiu1RBs3wPylCgHDp+p0KW+6pOCu1ZZL0/91KcldwuTj3Wl7SYUbjS 6EFOX/NOTGnJRrVG/D4wck9Pfy8sqLXZn0v/9DRrtVvgn0NJ34WuweUTYJpViBSL92mI tKmQ== X-Forwarded-Encrypted: i=1; AJvYcCXQxM0sPnc/x7gJxl60CL5NDBcXFyMeeL6+29EClLnbdJjRss1NaJjBwyJ9U5RZquAFVUxxsNb0fGTmhG0=@vger.kernel.org X-Gm-Message-State: AOJu0Yzvte/dK2yNXpD8fUVVQnocwRGfYxyOJJu3v1am8JEGXWTnTXWL 2DGhAKJghaqDH+5Qsp2ppRlRTUCdT4vK3xsJkkP/gJP5VDLJTNf3qFeOZ3nwqBD4WAfYuPbUNhB 6hvvS3lG9Gw== X-Google-Smtp-Source: AGHT+IF9XwhFQR2h1jmFzhoM4cI9mY/FF1ErAZpNkpgMPuH3dhK72GK9RcSuXbYZsCAYAGJzsMK+g/2Wzm9U X-Received: from pjdn4.prod.google.com ([2002:a17:90a:2c84:b0:313:1c10:3595]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:35d1:b0:311:9c1f:8522 with SMTP id 98e67ed59e1d1-31310fff12dmr4930443a91.10.1749059174777; Wed, 04 Jun 2025 10:46:14 -0700 (PDT) Date: Wed, 4 Jun 2025 10:45:43 -0700 In-Reply-To: <20250604174545.2853620-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: <20250604174545.2853620-1-irogers@google.com> X-Mailer: git-send-email 2.50.0.rc0.604.gd4ff7b7c86-goog Message-ID: <20250604174545.2853620-10-irogers@google.com> Subject: [PATCH v4 09/10] perf target: Remove uid from target From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Dapeng Mi , Thomas Richter , Veronika Molnarova , Chun-Tse Shao , Leo Yan , Hao Ge , Howard Chu , Weilin Wang , Levi Yun , "Dr. David Alan Gilbert" , Gautam Menghani , Tengda Wu , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Gathering threads with a uid by scanning /proc is inherently racy leading to perf_event_open failures that quit perf. All users of the functionality now use BPF filters, so remove uid and uid_str from target. Signed-off-by: Ian Rogers --- tools/perf/builtin-ftrace.c | 1 - tools/perf/builtin-kvm.c | 2 - tools/perf/builtin-stat.c | 4 +- tools/perf/builtin-trace.c | 1 - tools/perf/tests/backward-ring-buffer.c | 1 - tools/perf/tests/event-times.c | 4 +- tools/perf/tests/openat-syscall-tp-fields.c | 1 - tools/perf/tests/perf-record.c | 1 - tools/perf/tests/task-exit.c | 1 - tools/perf/util/bpf-filter.c | 2 +- tools/perf/util/evlist.c | 3 +- tools/perf/util/target.c | 46 +-------------------- tools/perf/util/target.h | 12 +----- 13 files changed, 6 insertions(+), 73 deletions(-) diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c index bba36ebc2aa7..3a253a1b9f45 100644 --- a/tools/perf/builtin-ftrace.c +++ b/tools/perf/builtin-ftrace.c @@ -1663,7 +1663,6 @@ int cmd_ftrace(int argc, const char **argv) int (*cmd_func)(struct perf_ftrace *) =3D NULL; struct perf_ftrace ftrace =3D { .tracer =3D DEFAULT_TRACER, - .target =3D { .uid =3D UINT_MAX, }, }; const struct option common_options[] =3D { OPT_STRING('p', "pid", &ftrace.target.pid, "pid", diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c index 67fd2b006b0b..d75bd3684980 100644 --- a/tools/perf/builtin-kvm.c +++ b/tools/perf/builtin-kvm.c @@ -1871,8 +1871,6 @@ static int kvm_events_live(struct perf_kvm_stat *kvm, kvm->opts.user_interval =3D 1; kvm->opts.mmap_pages =3D 512; kvm->opts.target.uses_mmap =3D false; - kvm->opts.target.uid_str =3D NULL; - kvm->opts.target.uid =3D UINT_MAX; =20 symbol__init(NULL); disable_buildid_cache(); diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c index bf0e5e12d992..50fc53adb7e4 100644 --- a/tools/perf/builtin-stat.c +++ b/tools/perf/builtin-stat.c @@ -108,9 +108,7 @@ static struct parse_events_option_args parse_events_opt= ion_args =3D { =20 static bool all_counters_use_bpf =3D true; =20 -static struct target target =3D { - .uid =3D UINT_MAX, -}; +static struct target target; =20 static volatile sig_atomic_t child_pid =3D -1; static int detailed_run =3D 0; diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index 4bb062b96f51..bf9b5d0630d3 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c @@ -5399,7 +5399,6 @@ int cmd_trace(int argc, const char **argv) struct trace trace =3D { .opts =3D { .target =3D { - .uid =3D UINT_MAX, .uses_mmap =3D true, }, .user_freq =3D UINT_MAX, diff --git a/tools/perf/tests/backward-ring-buffer.c b/tools/perf/tests/bac= kward-ring-buffer.c index 79a980b1e786..c5e7999f2817 100644 --- a/tools/perf/tests/backward-ring-buffer.c +++ b/tools/perf/tests/backward-ring-buffer.c @@ -91,7 +91,6 @@ static int test__backward_ring_buffer(struct test_suite *= test __maybe_unused, in struct parse_events_error parse_error; struct record_opts opts =3D { .target =3D { - .uid =3D UINT_MAX, .uses_mmap =3D true, }, .freq =3D 0, diff --git a/tools/perf/tests/event-times.c b/tools/perf/tests/event-times.c index deefe5003bfc..2148024b4f4a 100644 --- a/tools/perf/tests/event-times.c +++ b/tools/perf/tests/event-times.c @@ -17,9 +17,7 @@ static int attach__enable_on_exec(struct evlist *evlist) { struct evsel *evsel =3D evlist__last(evlist); - struct target target =3D { - .uid =3D UINT_MAX, - }; + struct target target =3D {}; const char *argv[] =3D { "true", NULL, }; char sbuf[STRERR_BUFSIZE]; int err; diff --git a/tools/perf/tests/openat-syscall-tp-fields.c b/tools/perf/tests= /openat-syscall-tp-fields.c index 0ef4ba7c1571..2a139d2781a8 100644 --- a/tools/perf/tests/openat-syscall-tp-fields.c +++ b/tools/perf/tests/openat-syscall-tp-fields.c @@ -28,7 +28,6 @@ static int test__syscall_openat_tp_fields(struct test_sui= te *test __maybe_unused { struct record_opts opts =3D { .target =3D { - .uid =3D UINT_MAX, .uses_mmap =3D true, }, .no_buffering =3D true, diff --git a/tools/perf/tests/perf-record.c b/tools/perf/tests/perf-record.c index 0958c7c8995f..0b3c37e66871 100644 --- a/tools/perf/tests/perf-record.c +++ b/tools/perf/tests/perf-record.c @@ -45,7 +45,6 @@ static int test__PERF_RECORD(struct test_suite *test __ma= ybe_unused, int subtest { struct record_opts opts =3D { .target =3D { - .uid =3D UINT_MAX, .uses_mmap =3D true, }, .no_buffering =3D true, diff --git a/tools/perf/tests/task-exit.c b/tools/perf/tests/task-exit.c index 8e328bbd509d..4053ff2813bb 100644 --- a/tools/perf/tests/task-exit.c +++ b/tools/perf/tests/task-exit.c @@ -46,7 +46,6 @@ static int test__task_exit(struct test_suite *test __mayb= e_unused, int subtest _ struct evsel *evsel; struct evlist *evlist; struct target target =3D { - .uid =3D UINT_MAX, .uses_mmap =3D true, }; const char *argv[] =3D { "true", NULL }; diff --git a/tools/perf/util/bpf-filter.c b/tools/perf/util/bpf-filter.c index 92e2f054b45e..d0e013eeb0f7 100644 --- a/tools/perf/util/bpf-filter.c +++ b/tools/perf/util/bpf-filter.c @@ -450,7 +450,7 @@ int perf_bpf_filter__prepare(struct evsel *evsel, struc= t target *target) struct bpf_program *prog; struct bpf_link *link; struct perf_bpf_filter_entry *entry; - bool needs_idx_hash =3D !target__has_cpu(target) && !target->uid_str; + bool needs_idx_hash =3D !target__has_cpu(target); =20 entry =3D calloc(MAX_FILTERS, sizeof(*entry)); if (entry =3D=3D NULL) diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index dcd1130502df..bed91bc88510 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -1006,8 +1006,7 @@ int evlist__create_maps(struct evlist *evlist, struct= target *target) * per-thread data. thread_map__new_str will call * thread_map__new_all_cpus to enumerate all threads. */ - threads =3D thread_map__new_str(target->pid, target->tid, target->uid, - all_threads); + threads =3D thread_map__new_str(target->pid, target->tid, UINT_MAX, all_t= hreads); =20 if (!threads) return -1; diff --git a/tools/perf/util/target.c b/tools/perf/util/target.c index f3ad59ccfa99..8cf71bea295a 100644 --- a/tools/perf/util/target.c +++ b/tools/perf/util/target.c @@ -28,20 +28,6 @@ enum target_errno target__validate(struct target *target) ret =3D TARGET_ERRNO__PID_OVERRIDE_CPU; } =20 - /* UID and PID are mutually exclusive */ - if (target->tid && target->uid_str) { - target->uid_str =3D NULL; - if (ret =3D=3D TARGET_ERRNO__SUCCESS) - ret =3D TARGET_ERRNO__PID_OVERRIDE_UID; - } - - /* UID and CPU are mutually exclusive */ - if (target->uid_str && target->cpu_list) { - target->cpu_list =3D NULL; - if (ret =3D=3D TARGET_ERRNO__SUCCESS) - ret =3D TARGET_ERRNO__UID_OVERRIDE_CPU; - } - /* PID and SYSTEM are mutually exclusive */ if (target->tid && target->system_wide) { target->system_wide =3D false; @@ -49,13 +35,6 @@ enum target_errno target__validate(struct target *target) ret =3D TARGET_ERRNO__PID_OVERRIDE_SYSTEM; } =20 - /* UID and SYSTEM are mutually exclusive */ - if (target->uid_str && target->system_wide) { - target->system_wide =3D false; - if (ret =3D=3D TARGET_ERRNO__SUCCESS) - ret =3D TARGET_ERRNO__UID_OVERRIDE_SYSTEM; - } - /* BPF and CPU are mutually exclusive */ if (target->bpf_str && target->cpu_list) { target->cpu_list =3D NULL; @@ -70,13 +49,6 @@ enum target_errno target__validate(struct target *target) ret =3D TARGET_ERRNO__BPF_OVERRIDE_PID; } =20 - /* BPF and UID are mutually exclusive */ - if (target->bpf_str && target->uid_str) { - target->uid_str =3D NULL; - if (ret =3D=3D TARGET_ERRNO__SUCCESS) - ret =3D TARGET_ERRNO__BPF_OVERRIDE_UID; - } - /* BPF and THREADS are mutually exclusive */ if (target->bpf_str && target->per_thread) { target->per_thread =3D false; @@ -124,31 +96,19 @@ uid_t parse_uid(const char *str) return result->pw_uid; } =20 -enum target_errno target__parse_uid(struct target *target) -{ - target->uid =3D parse_uid(target->uid_str); - - return target->uid !=3D UINT_MAX ? TARGET_ERRNO__SUCCESS : TARGET_ERRNO__= INVALID_UID; -} - /* * This must have a same ordering as the enum target_errno. */ static const char *target__error_str[] =3D { "PID/TID switch overriding CPU", - "PID/TID switch overriding UID", - "UID switch overriding CPU", "PID/TID switch overriding SYSTEM", - "UID switch overriding SYSTEM", "SYSTEM/CPU switch overriding PER-THREAD", "BPF switch overriding CPU", "BPF switch overriding PID/TID", - "BPF switch overriding UID", "BPF switch overriding THREAD", - "Invalid User: %s", }; =20 -int target__strerror(struct target *target, int errnum, +int target__strerror(struct target *target __maybe_unused, int errnum, char *buf, size_t buflen) { int idx; @@ -173,10 +133,6 @@ int target__strerror(struct target *target, int errnum, snprintf(buf, buflen, "%s", msg); break; =20 - case TARGET_ERRNO__INVALID_UID: - snprintf(buf, buflen, msg, target->uid_str); - break; - default: /* cannot reach here */ break; diff --git a/tools/perf/util/target.h b/tools/perf/util/target.h index e082bda990fb..84ebb9c940c6 100644 --- a/tools/perf/util/target.h +++ b/tools/perf/util/target.h @@ -9,9 +9,7 @@ struct target { const char *pid; const char *tid; const char *cpu_list; - const char *uid_str; const char *bpf_str; - uid_t uid; bool system_wide; bool uses_mmap; bool default_per_cpu; @@ -36,32 +34,24 @@ enum target_errno { =20 /* for target__validate() */ TARGET_ERRNO__PID_OVERRIDE_CPU =3D __TARGET_ERRNO__START, - TARGET_ERRNO__PID_OVERRIDE_UID, - TARGET_ERRNO__UID_OVERRIDE_CPU, TARGET_ERRNO__PID_OVERRIDE_SYSTEM, - TARGET_ERRNO__UID_OVERRIDE_SYSTEM, TARGET_ERRNO__SYSTEM_OVERRIDE_THREAD, TARGET_ERRNO__BPF_OVERRIDE_CPU, TARGET_ERRNO__BPF_OVERRIDE_PID, - TARGET_ERRNO__BPF_OVERRIDE_UID, TARGET_ERRNO__BPF_OVERRIDE_THREAD, =20 - /* for target__parse_uid() */ - TARGET_ERRNO__INVALID_UID, - __TARGET_ERRNO__END, }; =20 enum target_errno target__validate(struct target *target); =20 uid_t parse_uid(const char *str); -enum target_errno target__parse_uid(struct target *target); =20 int target__strerror(struct target *target, int errnum, char *buf, size_t = buflen); =20 static inline bool target__has_task(struct target *target) { - return target->tid || target->pid || target->uid_str; + return target->tid || target->pid; } =20 static inline bool target__has_cpu(struct target *target) --=20 2.50.0.rc0.604.gd4ff7b7c86-goog From nobody Fri Dec 19 02:16:18 2025 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 6F3F422F164 for ; Wed, 4 Jun 2025 17:46:17 +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=1749059180; cv=none; b=DiOecgnvSlkI9BvCr0bjCyNE75EpwswrmvZtLYK7rDu2t0rQevj4Wg4A/m0myNkYPBoYnKjgYaaOs7JFeMmfvdC3vyF2JVGdHpQZrXI2TqyW9E0wYu5Hcrbi2V8cW5vZOaoaAoeojoRnS5lCGTZ8yRS09grYx1DqBfs2Go+oDDs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749059180; c=relaxed/simple; bh=wZK+we/hMcP+LapTxOBOp7OwL1VcwIn5OCn/9I5QRgs=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=qqcK2n0i/OCbFX7wSpi4zzMrDsK/8V5yhUEsqZVJ5VvjgLHDE7hsBKdTGuIH560Gmbg/WRp5VWYYYWfVK323js/Cgcd3AAXOpnMRb36YxtR0KCi/RRM2t2aQEO3/JdmdeB00YUrpSmgLlGIShlJnwJ/jvyhtQ40T9TBtTqZdc6s= 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=bDEbAm5I; 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="bDEbAm5I" Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-235e1d70d67so813575ad.0 for ; Wed, 04 Jun 2025 10:46:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1749059177; x=1749663977; darn=vger.kernel.org; h=to:from:subject:message-id:references:mime-version:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=INWoFAyj0eyA0CoTLK03m3e2rQOzGxqm2qpqJgTA5nM=; b=bDEbAm5I2ez2kzCV3snMXewyiTKCclf1SVaYbz5zjEZFVvNwCY6/CIfgUnbM55Yy9l ocWhS6pX5dxc6yl6ECT3iHi27jW2ArfghOUPALg+hj6UBj4WJSDZV2XXQ6tbEufVLJVK tyZbDR6xPgAn2fib2BRSwTULSv/T8zt96Ya+yudF65IxyKnAYRU0xXBa2YCvtVao/g5t AWXuUY9w9AZc+dCjSDbSZJeomqxSXuNTH3zQg+xfPfWVX+zW70NkNMF+LtgC8/VOsuSH T5xapQ5588pAr/SWtX93O5ip6o683UkgbA0k9dJ9pDPMy43liGTxSzzG3cDTGN/I3h5E 4Szg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749059177; x=1749663977; h=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=INWoFAyj0eyA0CoTLK03m3e2rQOzGxqm2qpqJgTA5nM=; b=cZQU18ZQSQQlWxhU7YMWJ5TJq1uerFYCtxLM5+ftZGJgYAw5jieDFer5TJXH/IciXX IZ4MpuO9RkYghgcLlvGj9Na7GiScFzxS5im18lBXjEZdHYugxREbd5Jlhmtj0ImnpJLa KPK1CgxEaJ6HfhBMTQbAX0YZJ1Rw/DjMFG7xY6MeFE1UAYwXKKZrt/6wcfoNpRvsCsOV tAic2YcYlTR7UexjGI631l3KWRilCreZK8/aYtKxpLvR9WyuDOClRIORB3tiiQdtps6U t932mpf1hrqZxsdj0aTR6sLK8ZwCLpBYXmsG32K70HK3wE4zS66/+n6r+IYzSGlsb9zv Oiag== X-Forwarded-Encrypted: i=1; AJvYcCVkKrcnnaZCkNsEq4xqVwNW7D9EzlaXkZ0sRvqW75fOspvPGffhn9SS4jPz20dG+chpGr5B9nGtj4GpQec=@vger.kernel.org X-Gm-Message-State: AOJu0YwdevPppS0o+mfG24S4JGKW1CdQQT7yqGImtKeC9HDnlzklFZFC 7DTuGRRZUUBKr/0nrOwli19eymHPeiK36C9ZYyDwUu97ZZndGYyzHcMoaNXFUj+i9HjLrkiMR4r AvvBydhsZNw== X-Google-Smtp-Source: AGHT+IHf/o2yJ5U0aWyNBeTVAzHPKBxWcj2Zisq53jKHEVdYVi5j58GMSdeOjE+nsD91miCc3aK5+1l+S40a X-Received: from pgbcq12.prod.google.com ([2002:a05:6a02:408c:b0:b2c:4d7e:b626]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:e5c4:b0:235:f70:fd44 with SMTP id d9443c01a7336-235e115029cmr52934475ad.21.1749059176707; Wed, 04 Jun 2025 10:46:16 -0700 (PDT) Date: Wed, 4 Jun 2025 10:45:44 -0700 In-Reply-To: <20250604174545.2853620-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: <20250604174545.2853620-1-irogers@google.com> X-Mailer: git-send-email 2.50.0.rc0.604.gd4ff7b7c86-goog Message-ID: <20250604174545.2853620-11-irogers@google.com> Subject: [PATCH v4 10/10] perf thread_map: Remove uid options From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Dapeng Mi , Thomas Richter , Veronika Molnarova , Chun-Tse Shao , Leo Yan , Hao Ge , Howard Chu , Weilin Wang , Levi Yun , "Dr. David Alan Gilbert" , Gautam Menghani , Tengda Wu , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Now the target doesn't have a uid, it is handled through BPF filters, remove the uid options to thread_map creation. Tidy up the functions used in tests to avoid passing unused arguments. Signed-off-by: Ian Rogers --- tools/perf/tests/event-times.c | 4 +-- tools/perf/tests/keep-tracking.c | 2 +- tools/perf/tests/mmap-basic.c | 2 +- tools/perf/tests/openat-syscall-all-cpus.c | 2 +- tools/perf/tests/openat-syscall.c | 2 +- tools/perf/tests/perf-time-to-tsc.c | 2 +- tools/perf/tests/switch-tracking.c | 2 +- tools/perf/tests/thread-map.c | 2 +- tools/perf/util/evlist.c | 2 +- tools/perf/util/python.c | 10 +++---- tools/perf/util/thread_map.c | 32 ++-------------------- tools/perf/util/thread_map.h | 6 ++-- 12 files changed, 20 insertions(+), 48 deletions(-) diff --git a/tools/perf/tests/event-times.c b/tools/perf/tests/event-times.c index 2148024b4f4a..ae3b98bb42cf 100644 --- a/tools/perf/tests/event-times.c +++ b/tools/perf/tests/event-times.c @@ -62,7 +62,7 @@ static int attach__current_disabled(struct evlist *evlist) =20 pr_debug("attaching to current thread as disabled\n"); =20 - threads =3D thread_map__new(-1, getpid(), UINT_MAX); + threads =3D thread_map__new_by_tid(getpid()); if (threads =3D=3D NULL) { pr_debug("thread_map__new\n"); return -1; @@ -88,7 +88,7 @@ static int attach__current_enabled(struct evlist *evlist) =20 pr_debug("attaching to current thread as enabled\n"); =20 - threads =3D thread_map__new(-1, getpid(), UINT_MAX); + threads =3D thread_map__new_by_tid(getpid()); if (threads =3D=3D NULL) { pr_debug("failed to call thread_map__new\n"); return -1; diff --git a/tools/perf/tests/keep-tracking.c b/tools/perf/tests/keep-track= ing.c index 5a3b2bed07f3..eafb49eb0b56 100644 --- a/tools/perf/tests/keep-tracking.c +++ b/tools/perf/tests/keep-tracking.c @@ -78,7 +78,7 @@ static int test__keep_tracking(struct test_suite *test __= maybe_unused, int subte int found, err =3D -1; const char *comm; =20 - threads =3D thread_map__new(-1, getpid(), UINT_MAX); + threads =3D thread_map__new_by_tid(getpid()); CHECK_NOT_NULL__(threads); =20 cpus =3D perf_cpu_map__new_online_cpus(); diff --git a/tools/perf/tests/mmap-basic.c b/tools/perf/tests/mmap-basic.c index bd2106628b34..04b547c6bdbe 100644 --- a/tools/perf/tests/mmap-basic.c +++ b/tools/perf/tests/mmap-basic.c @@ -46,7 +46,7 @@ static int test__basic_mmap(struct test_suite *test __may= be_unused, int subtest char sbuf[STRERR_BUFSIZE]; struct mmap *md; =20 - threads =3D thread_map__new(-1, getpid(), UINT_MAX); + threads =3D thread_map__new_by_tid(getpid()); if (threads =3D=3D NULL) { pr_debug("thread_map__new\n"); return -1; diff --git a/tools/perf/tests/openat-syscall-all-cpus.c b/tools/perf/tests/= openat-syscall-all-cpus.c index fb114118c876..3644d6f52c07 100644 --- a/tools/perf/tests/openat-syscall-all-cpus.c +++ b/tools/perf/tests/openat-syscall-all-cpus.c @@ -28,7 +28,7 @@ static int test__openat_syscall_event_on_all_cpus(struct = test_suite *test __mayb struct evsel *evsel; unsigned int nr_openat_calls =3D 111, i; cpu_set_t cpu_set; - struct perf_thread_map *threads =3D thread_map__new(-1, getpid(), UINT_MA= X); + struct perf_thread_map *threads =3D thread_map__new_by_tid(getpid()); char sbuf[STRERR_BUFSIZE]; char errbuf[BUFSIZ]; =20 diff --git a/tools/perf/tests/openat-syscall.c b/tools/perf/tests/openat-sy= scall.c index 131b62271bfa..b54cbe5f1808 100644 --- a/tools/perf/tests/openat-syscall.c +++ b/tools/perf/tests/openat-syscall.c @@ -20,7 +20,7 @@ static int test__openat_syscall_event(struct test_suite *= test __maybe_unused, int err =3D TEST_FAIL, fd; struct evsel *evsel; unsigned int nr_openat_calls =3D 111, i; - struct perf_thread_map *threads =3D thread_map__new(-1, getpid(), UINT_MA= X); + struct perf_thread_map *threads =3D thread_map__new_by_tid(getpid()); char sbuf[STRERR_BUFSIZE]; char errbuf[BUFSIZ]; =20 diff --git a/tools/perf/tests/perf-time-to-tsc.c b/tools/perf/tests/perf-ti= me-to-tsc.c index d3e40fa5482c..d4437410c99f 100644 --- a/tools/perf/tests/perf-time-to-tsc.c +++ b/tools/perf/tests/perf-time-to-tsc.c @@ -90,7 +90,7 @@ static int test__perf_time_to_tsc(struct test_suite *test= __maybe_unused, int su struct mmap *md; =20 =20 - threads =3D thread_map__new(-1, getpid(), UINT_MAX); + threads =3D thread_map__new_by_tid(getpid()); CHECK_NOT_NULL__(threads); =20 cpus =3D perf_cpu_map__new_online_cpus(); diff --git a/tools/perf/tests/switch-tracking.c b/tools/perf/tests/switch-t= racking.c index 6b3aac283c37..5be294014d3b 100644 --- a/tools/perf/tests/switch-tracking.c +++ b/tools/perf/tests/switch-tracking.c @@ -351,7 +351,7 @@ static int test__switch_tracking(struct test_suite *tes= t __maybe_unused, int sub const char *comm; int err =3D -1; =20 - threads =3D thread_map__new(-1, getpid(), UINT_MAX); + threads =3D thread_map__new_by_tid(getpid()); if (!threads) { pr_debug("thread_map__new failed!\n"); goto out_err; diff --git a/tools/perf/tests/thread-map.c b/tools/perf/tests/thread-map.c index 1fe521466bf4..54209592168d 100644 --- a/tools/perf/tests/thread-map.c +++ b/tools/perf/tests/thread-map.c @@ -115,7 +115,7 @@ static int test__thread_map_remove(struct test_suite *t= est __maybe_unused, int s TEST_ASSERT_VAL("failed to allocate map string", asprintf(&str, "%d,%d", getpid(), getppid()) >=3D 0); =20 - threads =3D thread_map__new_str(str, NULL, 0, false); + threads =3D thread_map__new_str(str, /*tid=3D*/NULL, /*all_threads=3D*/fa= lse); free(str); =20 TEST_ASSERT_VAL("failed to allocate thread_map", diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index bed91bc88510..5664ebf6bbc6 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c @@ -1006,7 +1006,7 @@ int evlist__create_maps(struct evlist *evlist, struct= target *target) * per-thread data. thread_map__new_str will call * thread_map__new_all_cpus to enumerate all threads. */ - threads =3D thread_map__new_str(target->pid, target->tid, UINT_MAX, all_t= hreads); + threads =3D thread_map__new_str(target->pid, target->tid, all_threads); =20 if (!threads) return -1; diff --git a/tools/perf/util/python.c b/tools/perf/util/python.c index 321c333877fa..82666bcd2eda 100644 --- a/tools/perf/util/python.c +++ b/tools/perf/util/python.c @@ -566,14 +566,14 @@ struct pyrf_thread_map { static int pyrf_thread_map__init(struct pyrf_thread_map *pthreads, PyObject *args, PyObject *kwargs) { - static char *kwlist[] =3D { "pid", "tid", "uid", NULL }; - int pid =3D -1, tid =3D -1, uid =3D UINT_MAX; + static char *kwlist[] =3D { "pid", "tid", NULL }; + int pid =3D -1, tid =3D -1; =20 - if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|iii", - kwlist, &pid, &tid, &uid)) + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|ii", + kwlist, &pid, &tid)) return -1; =20 - pthreads->threads =3D thread_map__new(pid, tid, uid); + pthreads->threads =3D thread_map__new(pid, tid); if (pthreads->threads =3D=3D NULL) return -1; return 0; diff --git a/tools/perf/util/thread_map.c b/tools/perf/util/thread_map.c index b5f12390c355..ca193c1374ed 100644 --- a/tools/perf/util/thread_map.c +++ b/tools/perf/util/thread_map.c @@ -72,7 +72,7 @@ struct perf_thread_map *thread_map__new_by_tid(pid_t tid) return threads; } =20 -static struct perf_thread_map *__thread_map__new_all_cpus(uid_t uid) +static struct perf_thread_map *thread_map__new_all_cpus(void) { DIR *proc; int max_threads =3D 32, items, i; @@ -98,15 +98,6 @@ static struct perf_thread_map *__thread_map__new_all_cpu= s(uid_t uid) if (*end) /* only interested in proper numerical dirents */ continue; =20 - snprintf(path, sizeof(path), "/proc/%s", dirent->d_name); - - if (uid !=3D UINT_MAX) { - struct stat st; - - if (stat(path, &st) !=3D 0 || st.st_uid !=3D uid) - continue; - } - snprintf(path, sizeof(path), "/proc/%d/task", pid); items =3D scandir(path, &namelist, filter, NULL); if (items <=3D 0) { @@ -157,24 +148,11 @@ static struct perf_thread_map *__thread_map__new_all_= cpus(uid_t uid) goto out_closedir; } =20 -struct perf_thread_map *thread_map__new_all_cpus(void) -{ - return __thread_map__new_all_cpus(UINT_MAX); -} - -struct perf_thread_map *thread_map__new_by_uid(uid_t uid) -{ - return __thread_map__new_all_cpus(uid); -} - -struct perf_thread_map *thread_map__new(pid_t pid, pid_t tid, uid_t uid) +struct perf_thread_map *thread_map__new(pid_t pid, pid_t tid) { if (pid !=3D -1) return thread_map__new_by_pid(pid); =20 - if (tid =3D=3D -1 && uid !=3D UINT_MAX) - return thread_map__new_by_uid(uid); - return thread_map__new_by_tid(tid); } =20 @@ -289,15 +267,11 @@ struct perf_thread_map *thread_map__new_by_tid_str(co= nst char *tid_str) goto out; } =20 -struct perf_thread_map *thread_map__new_str(const char *pid, const char *t= id, - uid_t uid, bool all_threads) +struct perf_thread_map *thread_map__new_str(const char *pid, const char *t= id, bool all_threads) { if (pid) return thread_map__new_by_pid_str(pid); =20 - if (!tid && uid !=3D UINT_MAX) - return thread_map__new_by_uid(uid); - if (all_threads) return thread_map__new_all_cpus(); =20 diff --git a/tools/perf/util/thread_map.h b/tools/perf/util/thread_map.h index 00ec05fc1656..fc16d87f32fb 100644 --- a/tools/perf/util/thread_map.h +++ b/tools/perf/util/thread_map.h @@ -11,13 +11,11 @@ struct perf_record_thread_map; struct perf_thread_map *thread_map__new_dummy(void); struct perf_thread_map *thread_map__new_by_pid(pid_t pid); struct perf_thread_map *thread_map__new_by_tid(pid_t tid); -struct perf_thread_map *thread_map__new_by_uid(uid_t uid); -struct perf_thread_map *thread_map__new_all_cpus(void); -struct perf_thread_map *thread_map__new(pid_t pid, pid_t tid, uid_t uid); +struct perf_thread_map *thread_map__new(pid_t pid, pid_t tid); struct perf_thread_map *thread_map__new_event(struct perf_record_thread_ma= p *event); =20 struct perf_thread_map *thread_map__new_str(const char *pid, - const char *tid, uid_t uid, bool all_threads); + const char *tid, bool all_threads); =20 struct perf_thread_map *thread_map__new_by_tid_str(const char *tid_str); =20 --=20 2.50.0.rc0.604.gd4ff7b7c86-goog