From nobody Mon Feb 9 07:59:22 2026 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 1AD3921C19A for ; Tue, 1 Apr 2025 18:24:55 +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=1743531897; cv=none; b=jRyW21ycdReg6V6d65CgHHb5RogymIn6kudG83VyOlNwcAhYHiZ6mkA0Jl44eV17PCWnbPiZRfh9lkyFBkW4lwG1Klifz6FzPBOLeocDHGToCjI4cyDSosP3cLJluzJyqG+NGcoNTFkmMjKJ/KhlP3/lSk61jkouFkDVgfKN7NA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743531897; c=relaxed/simple; bh=AORnD1om4C2sypJLzjCz8efPFZxPS6C3udp8jTr5i34=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Content-Type; b=fkjc3MoyEVGkLc0AgbM2DpYhOJur9kLcUivuNej/SM44FwDTLrKOo2pPmPlG33aQRijwcIhIamKaTOXnCvn/p0WasjGI4IubZHZgNBwqpxB+HlQ0asyzwMLUPc+s+QbfO5sJMcXrcGXvr+BzRpd1oRP7Nq7Clp6WMFyXr9DbQEs= 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=etnY6pWf; 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="etnY6pWf" Received: by mail-pl1-f202.google.com with SMTP id d9443c01a7336-2240c997059so134714385ad.0 for ; Tue, 01 Apr 2025 11:24:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1743531895; x=1744136695; 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=1ougT7jDU8A9cudDjFwokt57F5i+izAS3bT+Nyxperg=; b=etnY6pWfB4PNfoe/W0mWeQxb0Uj4HpUj4DitoagiherBLjvNEG17F0xK3W6uv17P3U mnMAYTjVf/Mm0QjgbT6pwQFm/f7Iq8eKqvq4P5eq/K7EeMlpoTFS8bDvp62BneWQdPvk xCduFf6toPfK8vA07XxhTf6s1rFhQxJQhhbLtw+a7pwRmxde93K3bgIijXO0g3KrL/in DVkOeUpwKL6TbIjZi6QVvjd3JWYVi75Ns4hIyhAVpio/UGxvHJc5URiHny98Sp2FvSnz Ov5zdaJjRxWs+yZiopv7aQwWPuIw7pJ+NovItkPGEbcadZ+E5s7g8rBANNnkY0aNh/jL cmeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743531895; x=1744136695; 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=1ougT7jDU8A9cudDjFwokt57F5i+izAS3bT+Nyxperg=; b=brjD7imMLj9Df5KDdt7oIG2lCPdJMU+8PhRZ09tpYj4sw6sGpAcyCqnhFm8o3Tfpj/ 2mZYamhUSy6ECLanyC2yEnRsAxVJE/EguatTqtPecJnOWvF0NdiIHdGiC0d95BoUZ7E6 cdmz+das5reqFIW5YyONLjpbulqUlVrq82GHxQpWT4wk1y8gbjIG1fnbzv5MPVtKR8v1 +XdvcV6Sp+dpfaP7LXyFjnCCMAssqpmUofiwam9GVaEsnWbbSYp6nccqHxDxJeEwZxdO TDMg6TkHfFZGbBx+2PYaqpCoBpxoYmDGSr/J3Eoo+MyE0k04ZGV0GaBjG3rGr/+coOn/ pBBg== X-Forwarded-Encrypted: i=1; AJvYcCXycxEo0xK01XipW3+AwYFESQD3Xxv0YwmFfloKOvzidmLg45/k6bT70ZBETJ6eTO0H6fgL8CTDJU/uLuk=@vger.kernel.org X-Gm-Message-State: AOJu0YzQrKot9kgyS/Y+jTHxguA7kuAcfkPDzbMbNY7dzKJ1Q1eXQ5+/ Nwq7rP2ODctnuC7jCOUnI8ohZC69rEwnXzhA9ryhauqOCPuWMKpwW3+aJVyg7MVyD5WIIYDEnwQ PlX2B9Q== X-Google-Smtp-Source: AGHT+IHJykACnjjgWPAWibGCmtd45+SU33aGZAT7wMdq/fqMroEpb2uj9+hf6s6MhADeGdU+pE8Kf/7i45Xn X-Received: from plble11.prod.google.com ([2002:a17:902:fb0b:b0:220:e7dc:350d]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:902:daca:b0:223:6180:1bea with SMTP id d9443c01a7336-2292f9e601emr208087855ad.37.1743531895008; Tue, 01 Apr 2025 11:24:55 -0700 (PDT) Date: Tue, 1 Apr 2025 11:23:07 -0700 In-Reply-To: <20250401182347.3422199-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: <20250401182347.3422199-1-irogers@google.com> X-Mailer: git-send-email 2.49.0.504.g3bcea36a83-goog Message-ID: <20250401182347.3422199-10-irogers@google.com> Subject: [PATCH v1 09/48] perf tests: Silence -Wshorten-64-to-32 warnings From: Ian Rogers To: Yury Norov , Rasmus Villemoes , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , Thomas Gleixner , Darren Hart , Davidlohr Bueso , "=?UTF-8?q?Andr=C3=A9=20Almeida?=" , John Garry , Will Deacon , James Clark , Mike Leach , Leo Yan , Yicong Yang , Jonathan Cameron , Nathan Chancellor , Bill Wendling , Justin Stitt , Josh Poimboeuf , Al Viro , Kyle Meyer , Ben Gainey , Athira Rajeev , Kajol Jain , Aditya Gupta , Eder Zulian , Dapeng Mi , Kuan-Wei Chiu , He Zhe , Dirk Gouders , Brian Geffon , Ravi Bangoria , Howard Chu , Charlie Jenkins , Colin Ian King , Dominique Martinet , Jann Horn , Masahiro Yamada , Arnd Bergmann , Yang Jihong , Dmitry Vyukov , Andi Kleen , Graham Woodward , Ilkka Koskinen , Anshuman Khandual , Zhongqiu Han , Hao Ge , Tengda Wu , Gabriele Monaco , Chun-Tse Shao , Casey Chen , "Dr. David Alan Gilbert" , Li Huafei , "Steinar H. Gunderson" , Levi Yun , Weilin Wang , Thomas Falcon , Thomas Richter , Andrew Kreimer , "=?UTF-8?q?Krzysztof=20=C5=81opatowski?=" , Christophe Leroy , Jean-Philippe Romain , Junhao He , "Masami Hiramatsu (Google)" , Xu Yang , Steve Clevenger , Zixian Cai , Stephen Brennan , Yujie Liu , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, llvm@lists.linux.dev Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The clang warning -Wshorten-64-to-32 can be useful to catch inadvertent truncation. In some instances this truncation can lead to changing the sign of a result, for example, truncation to return an int to fit a sort routine. Silence the warning by making the implicit truncation explicit. Signed-off-by: Ian Rogers --- tools/perf/tests/api-io.c | 2 +- tools/perf/tests/bp_signal.c | 6 +++--- tools/perf/tests/bp_signal_overflow.c | 6 +++--- tools/perf/tests/builtin-test.c | 9 +++++---- tools/perf/tests/code-reading.c | 4 ++-- tools/perf/tests/dso-data.c | 10 +++++----- tools/perf/tests/mmap-thread-lookup.c | 2 +- tools/perf/tests/openat-syscall-tp-fields.c | 2 +- tools/perf/tests/pmu-events.c | 2 +- tools/perf/tests/sigtrap.c | 4 ++-- tools/perf/tests/switch-tracking.c | 11 ++++++----- tools/perf/tests/vmlinux-kallsyms.c | 4 ++-- tools/perf/tests/wp.c | 4 ++-- 13 files changed, 34 insertions(+), 32 deletions(-) diff --git a/tools/perf/tests/api-io.c b/tools/perf/tests/api-io.c index 0ba3d5ccebcf..4aee1cff062e 100644 --- a/tools/perf/tests/api-io.c +++ b/tools/perf/tests/api-io.c @@ -74,7 +74,7 @@ static int setup_test(char path[PATH_MAX], const char *co= ntents, unlink(path); return -1; } - io__init(io, io->fd, io->buf, buf_size); + io__init(io, io->fd, io->buf, (unsigned int)buf_size); return 0; } =20 diff --git a/tools/perf/tests/bp_signal.c b/tools/perf/tests/bp_signal.c index 3faeb5b6fe0b..5ecac6c2d8b6 100644 --- a/tools/perf/tests/bp_signal.c +++ b/tools/perf/tests/bp_signal.c @@ -64,7 +64,7 @@ static noinline int test_function(void) { __test_function(&the_var); the_var++; - return time(NULL); + return (int)time(NULL); } =20 static void sig_handler_2(int signum __maybe_unused, @@ -151,11 +151,11 @@ static int wp_event(void *addr, int sig) static long long bp_count(int fd) { long long count; - int ret; + ssize_t ret; =20 ret =3D read(fd, &count, sizeof(long long)); if (ret !=3D sizeof(long long)) { - pr_debug("failed to read: %d\n", ret); + pr_debug("failed to read: %zd\n", ret); return TEST_FAIL; } =20 diff --git a/tools/perf/tests/bp_signal_overflow.c b/tools/perf/tests/bp_si= gnal_overflow.c index ee560e156be6..eb9021ad8177 100644 --- a/tools/perf/tests/bp_signal_overflow.c +++ b/tools/perf/tests/bp_signal_overflow.c @@ -33,7 +33,7 @@ static int overflows; =20 static noinline int test_function(void) { - return time(NULL); + return (int)time(NULL); } =20 static void sig_handler(int signum __maybe_unused, @@ -46,11 +46,11 @@ static void sig_handler(int signum __maybe_unused, static long long bp_count(int fd) { long long count; - int ret; + ssize_t ret; =20 ret =3D read(fd, &count, sizeof(long long)); if (ret !=3D sizeof(long long)) { - pr_debug("failed to read: %d\n", ret); + pr_debug("failed to read: %zd\n", ret); return TEST_FAIL; } =20 diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-tes= t.c index 14d30a5053be..4ea840580876 100644 --- a/tools/perf/tests/builtin-test.c +++ b/tools/perf/tests/builtin-test.c @@ -301,7 +301,7 @@ static int print_test_result(struct test_suite *t, int = curr_suite, int curr_test return 0; } =20 -static void finish_test(struct child_test **child_tests, int running_test,= int child_test_num, +static void finish_test(struct child_test **child_tests, size_t running_te= st, size_t child_test_num, int width) { struct child_test *child_test =3D child_tests[running_test]; @@ -349,7 +349,7 @@ static void finish_test(struct child_test **child_tests= , int running_test, int c if (perf_use_color_default) { int running =3D 0; =20 - for (int y =3D running_test; y < child_test_num; y++) { + for (size_t y =3D running_test; y < child_test_num; y++) { if (child_tests[y] =3D=3D NULL) continue; if (check_if_command_finished(&child_tests[y]->process) =3D=3D 0) @@ -478,13 +478,14 @@ static int __cmd_test(struct test_suite **suites, int= argc, const char *argv[], int err =3D 0; =20 for (struct test_suite **t =3D suites; *t; t++) { - int i, len =3D strlen(test_description(*t, -1)); + int i; + int len =3D (int)strlen(test_description(*t, -1)); =20 if (width < len) width =3D len; =20 test_suite__for_each_test_case(*t, i) { - len =3D strlen(test_description(*t, i)); + len =3D (int)strlen(test_description(*t, i)); if (width < len) width =3D len; num_tests +=3D runs_per_test; diff --git a/tools/perf/tests/code-reading.c b/tools/perf/tests/code-readin= g.c index cf6edbe697b2..0c31d5ff77e2 100644 --- a/tools/perf/tests/code-reading.c +++ b/tools/perf/tests/code-reading.c @@ -188,7 +188,7 @@ static int objdump_version(void) char *line =3D NULL; const char *fmt; FILE *f; - int ret; + ssize_t ret; =20 int version_tmp, version_num =3D 0; char *version =3D 0, *token; @@ -295,7 +295,7 @@ static int read_via_objdump(const char *filename, u64 a= ddr, void *buf, if (len) { pr_debug("objdump read too few bytes: %zd\n", len); if (!ret) - ret =3D len; + ret =3D (int)len; } =20 pclose(f); diff --git a/tools/perf/tests/dso-data.c b/tools/perf/tests/dso-data.c index a1fff4203b75..2954e06ae5b3 100644 --- a/tools/perf/tests/dso-data.c +++ b/tools/perf/tests/dso-data.c @@ -233,14 +233,14 @@ static int dsos__create(int cnt, int size, struct dso= s *dsos) return 0; } =20 -static int set_fd_limit(int n) +static int set_fd_limit(long n) { struct rlimit rlim; =20 if (getrlimit(RLIMIT_NOFILE, &rlim)) return -1; =20 - pr_debug("file limit %ld, new %d\n", (long) rlim.rlim_cur, n); + pr_debug("file limit %ld, new %ld\n", (long) rlim.rlim_cur, n); =20 rlim.rlim_cur =3D n; return setrlimit(RLIMIT_NOFILE, &rlim); @@ -249,8 +249,8 @@ static int set_fd_limit(int n) static int test__dso_data_cache(struct test_suite *test __maybe_unused, in= t subtest __maybe_unused) { struct machine machine; - long nr_end, nr =3D open_files_cnt(); - int dso_cnt, limit, i, fd; + long dso_cnt, limit, nr_end, nr =3D open_files_cnt(); + int i, fd; =20 /* Rest the internal dso open counter limit. */ reset_fd_limit(); @@ -264,7 +264,7 @@ static int test__dso_data_cache(struct test_suite *test= __maybe_unused, int subt /* and this is now our dso open FDs limit */ dso_cnt =3D limit / 2; TEST_ASSERT_VAL("failed to create dsos\n", - !dsos__create(dso_cnt, TEST_FILE_SIZE, &machine.dsos)); + !dsos__create((int)dso_cnt, TEST_FILE_SIZE, &machine.dsos)); =20 for (i =3D 0; i < (dso_cnt - 1); i++) { struct dso *dso =3D machine.dsos.dsos[i]; diff --git a/tools/perf/tests/mmap-thread-lookup.c b/tools/perf/tests/mmap-= thread-lookup.c index 446a3615d720..b328ad6973a3 100644 --- a/tools/perf/tests/mmap-thread-lookup.c +++ b/tools/perf/tests/mmap-thread-lookup.c @@ -45,7 +45,7 @@ static int thread_init(struct thread_data *td) } =20 td->map =3D map; - td->tid =3D syscall(SYS_gettid); + td->tid =3D (pid_t)syscall(SYS_gettid); =20 pr_debug("tid =3D %d, map =3D %p\n", td->tid, map); return 0; diff --git a/tools/perf/tests/openat-syscall-tp-fields.c b/tools/perf/tests= /openat-syscall-tp-fields.c index 0ef4ba7c1571..68f1498d0a47 100644 --- a/tools/perf/tests/openat-syscall-tp-fields.c +++ b/tools/perf/tests/openat-syscall-tp-fields.c @@ -119,7 +119,7 @@ static int test__syscall_openat_tp_fields(struct test_s= uite *test __maybe_unused goto out_delete_evlist; } =20 - tp_flags =3D evsel__intval(evsel, &sample, "flags"); + tp_flags =3D (int)evsel__intval(evsel, &sample, "flags"); perf_sample__exit(&sample); if (flags !=3D tp_flags) { pr_debug("%s: Expected flags=3D%#x, got %#x\n", diff --git a/tools/perf/tests/pmu-events.c b/tools/perf/tests/pmu-events.c index db004d26fcb0..2762794827ce 100644 --- a/tools/perf/tests/pmu-events.c +++ b/tools/perf/tests/pmu-events.c @@ -609,7 +609,7 @@ static int __test_uncore_pmu_event_aliases(struct perf_= pmu_test_pmu *test_pmu) pmu_add_sys_aliases(pmu); =20 /* Count how many aliases we generated */ - alias_count =3D perf_pmu__num_events(pmu); + alias_count =3D (int)perf_pmu__num_events(pmu); =20 /* Count how many aliases we expect from the known table */ for (table =3D &test_pmu->aliases[0]; *table; table++) diff --git a/tools/perf/tests/sigtrap.c b/tools/perf/tests/sigtrap.c index a67c756f90b8..b7d7735f8a72 100644 --- a/tools/perf/tests/sigtrap.c +++ b/tools/perf/tests/sigtrap.c @@ -154,13 +154,13 @@ sigtrap_handler(int signum __maybe_unused, siginfo_t = *info, void *ucontext __may { if (!__atomic_fetch_add(&ctx.signal_count, 1, __ATOMIC_RELAXED)) ctx.first_siginfo =3D *info; - __atomic_fetch_sub(&ctx.tids_want_signal, syscall(SYS_gettid), __ATOMIC_R= ELAXED); + __atomic_fetch_sub(&ctx.tids_want_signal, (pid_t)syscall(SYS_gettid), __A= TOMIC_RELAXED); } =20 static void *test_thread(void *arg) { pthread_barrier_t *barrier =3D (pthread_barrier_t *)arg; - pid_t tid =3D syscall(SYS_gettid); + pid_t tid =3D (pid_t)syscall(SYS_gettid); int i; =20 pthread_barrier_wait(barrier); diff --git a/tools/perf/tests/switch-tracking.c b/tools/perf/tests/switch-t= racking.c index 8df3f9d9ffd2..1f0f8321ae40 100644 --- a/tools/perf/tests/switch-tracking.c +++ b/tools/perf/tests/switch-tracking.c @@ -140,8 +140,8 @@ static int process_sample_event(struct evlist *evlist, =20 evsel =3D evlist__id2evsel(evlist, sample.id); if (evsel =3D=3D switch_tracking->switch_evsel) { - next_tid =3D evsel__intval(evsel, &sample, "next_pid"); - prev_tid =3D evsel__intval(evsel, &sample, "prev_pid"); + next_tid =3D (int)evsel__intval(evsel, &sample, "next_pid"); + prev_tid =3D (int)evsel__intval(evsel, &sample, "prev_pid"); cpu =3D sample.cpu; pr_debug3("sched_switch: cpu: %d prev_tid %d next_tid %d\n", cpu, prev_tid, next_tid); @@ -262,9 +262,10 @@ static int compar(const void *a, const void *b) { const struct event_node *nodea =3D a; const struct event_node *nodeb =3D b; - s64 cmp =3D nodea->event_time - nodeb->event_time; =20 - return cmp; + if (nodea->event_time =3D=3D nodeb->event_time) + return 0; + return nodea->event_time < nodeb->event_time ? -1 : 1; } =20 static int process_events(struct evlist *evlist, @@ -398,7 +399,7 @@ static int test__switch_tracking(struct test_suite *tes= t __maybe_unused, int sub =20 switch_evsel =3D evlist__add_sched_switch(evlist, true); if (IS_ERR(switch_evsel)) { - err =3D PTR_ERR(switch_evsel); + err =3D (int)PTR_ERR(switch_evsel); pr_debug("Failed to create event %s\n", sched_switch); goto out_err; } diff --git a/tools/perf/tests/vmlinux-kallsyms.c b/tools/perf/tests/vmlinux= -kallsyms.c index 74cdbd2ce9d0..fbdb463e965d 100644 --- a/tools/perf/tests/vmlinux-kallsyms.c +++ b/tools/perf/tests/vmlinux-kallsyms.c @@ -82,7 +82,7 @@ static bool is_ignored_symbol(const char *name, char type) return true; =20 for (p =3D ignored_suffixes; *p; p++) { - int l =3D strlen(name) - strlen(*p); + ssize_t l =3D strlen(name) - strlen(*p); =20 if (l >=3D 0 && !strcmp(name + l, *p)) return true; @@ -313,7 +313,7 @@ static int test__vmlinux_matches_kallsyms(struct test_s= uite *test __maybe_unused * _really_ have a problem. */ s64 skew =3D mem_end - UM(pair->end); - if (llabs(skew) >=3D page_size) + if (llabs(skew) >=3D (s64)page_size) pr_debug("WARN: %#" PRIx64 ": diff end addr for %s v: %#" PRIx64 " k:= %#" PRIx64 "\n", mem_start, sym->name, mem_end, UM(pair->end)); diff --git a/tools/perf/tests/wp.c b/tools/perf/tests/wp.c index 6c178985e37f..d5dd17eb5c05 100644 --- a/tools/perf/tests/wp.c +++ b/tools/perf/tests/wp.c @@ -31,10 +31,10 @@ volatile u8 data2[3]; #ifndef __s390x__ static int wp_read(int fd, long long *count, int size) { - int ret =3D read(fd, count, size); + ssize_t ret =3D read(fd, count, size); =20 if (ret !=3D size) { - pr_debug("failed to read: %d\n", ret); + pr_debug("failed to read: %zd\n", ret); return -1; } return 0; --=20 2.49.0.504.g3bcea36a83-goog