From nobody Fri Dec 19 17:26:45 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 8CE862620D2 for ; Wed, 30 Apr 2025 17:51:03 +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=1746035465; cv=none; b=XGQbBqjUhstfEGEGVy51d/wYk7Ang0iyQ/MZcsWhhbAVTOK2RCLeLPzhSsITBrfnbp2whG1qoIX+ppeCcqy9txD08pw98txVTyJVuAcecNuPWAPICUHkp2dRXfrArCMFlhQDFusC0Ed7lsBpe1uj5hXPkQnh2VixICyc49yuw00= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746035465; c=relaxed/simple; bh=Cpj7SfLJpeZm5X2ThA9QdOhm/ocHRn1C/cM/8eJqfTQ=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=D9xfpkzznEhdRCWumBy+ZSnjbekJBtBTMZE9N/N9Jbu/z6QeXApKIe75MCNlE2x6AKQDaK27optYrS7/W1Y3uCHSu1LfrJGAoPKieJO86bWD4rznXU9EBKTlc2Fsi3ZBLxDMGKfwMJ5LLanpDIUJ/I37LhDyR2WIZvIrKHk7gs0= 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=cXvRcoVa; 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="cXvRcoVa" Received: by mail-pj1-f74.google.com with SMTP id 98e67ed59e1d1-306b51e30ffso128208a91.1 for ; Wed, 30 Apr 2025 10:51:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1746035463; x=1746640263; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=r8RvdQ8SFq1KIeP+jGDhxuv/Zk6eXkFP72n3ZgWDiV8=; b=cXvRcoVaZRkFaz6EUhhIe/GMvTPgAIRMCntFwoFH714DYE/5BLBw8e4qLCfFndbMND MqmmqFlDin05ORP1kD0xdNdd6pRMSUHYrDv8XCFlPYBMySE9hQMBK+gqSnKM4HuvrxY1 Vr5hCo/sCrwrxZaIKsFfqiNrJMFiWdG+CLbpFgNyY5etKa7XpVKxc1acOvzNykZi+Ung PNMEIyF3A0wNXmtJsG9gL+u8VikK5ypB/wAU/+jP+avFh9qlFc64IyjVX+/dm8w1J0pu N2ehOO6RM7+sF+UonhgePp0W278LGPkxDoEi5xQTE9XwtmO1+Ct0NZN4rfwWbkGZOE2y QhAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746035463; x=1746640263; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=r8RvdQ8SFq1KIeP+jGDhxuv/Zk6eXkFP72n3ZgWDiV8=; b=iF7iShX55dFIsDvdybintgsG11ILxmz26U4gF+7JH+Aoy04kZfVojYKvRTmw6FbGpS LqumIgpxwcYqeitQ9/e2f1w1DFHKxk8cxW3fzmXG1GnAlPVnVH3ChFcouWpO0DSNOxtH zuF9JEVthe3hEcDMHWREsUUIZtbQ3KvqKkSvQTPEt9/1FMpRwcUVGmV6cKB6smLOtzQm WcTl+BfS0KBPrTalDw6eQHV9C7GPjA6tnSjrev9STI0Pifb/BcLxZnnlOJIqoE8pD3NF dtROkmpHLOM9JRxDHtW1t31WiwmTxDZzTPAScCaQrTzmsdVV7HH0QRXFzGzTJImwp221 Btaw== X-Forwarded-Encrypted: i=1; AJvYcCWuSGmEoehYyKQ/9V/yAYcu6wteTFls1jJFNVquhmHlSW0PpEJtyf5jTFQePnf8oGwmONYiSqL2vwxjwbY=@vger.kernel.org X-Gm-Message-State: AOJu0YwfXDx7CHEotSfXP5Y+wXgMIzrFeAKVu8vx0ftnA+kajHKJx04u yW9lqYv/GLslpU9cBm5E5GNsQ59Y3vZiNkcbPI+wT4EVkod/eaEFqNyKJUF0iAmmNs8qrVCuuSQ JNtUSjA== X-Google-Smtp-Source: AGHT+IGl9FerxjPNZ4o8UL0bzBuP1N0O24NwppnmAtvcSdHMHT9Q9beF3u5qr3WvfKO++NCR4yzPkdEF/vPY X-Received: from pjgg8.prod.google.com ([2002:a17:90b:57c8:b0:2f5:63a:4513]) (user=irogers job=prod-delivery.src-stubby-dispatcher) by 2002:a17:90b:17cd:b0:2ee:cded:9ac7 with SMTP id 98e67ed59e1d1-30a3331ee0bmr5422318a91.20.1746035462064; Wed, 30 Apr 2025 10:51:02 -0700 (PDT) Date: Wed, 30 Apr 2025 10:49:50 -0700 In-Reply-To: <20250430175036.184610-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: <20250430175036.184610-1-irogers@google.com> X-Mailer: git-send-email 2.49.0.906.g1f30a19c02-goog Message-ID: <20250430175036.184610-3-irogers@google.com> Subject: [PATCH v2 02/47] perf tests: Silence -Wshorten-64-to-32 warnings From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , Kan Liang , Yury Norov , Rasmus Villemoes , 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 Cc: Ian Rogers 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.906.g1f30a19c02-goog