| From 9697b5e0996a53e781f29001534c9a3cbd0636af Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 29 Jan 2025 15:44:05 +0000 |
| Subject: perf: Always feature test reallocarray |
| |
| From: James Clark <james.clark@linaro.org> |
| |
| [ Upstream commit 4c4c0724d6521a8092b7c16f8f210c5869d95b17 ] |
| |
| This is also used in util/comm.c now, so instead of selectively doing |
| the feature test, always do it. If it's ever used anywhere else it's |
| less likely to cause another build failure. |
| |
| This doesn't remove the need to manually include libc_compat.h, and |
| missing that will still cause an error for glibc < 2.26. There isn't a |
| way to fix that without poisoning reallocarray like libbpf did, but that |
| has other downsides like making memory debugging tools less useful. So |
| for Perf keep it like this and we'll have to fix up any missed includes. |
| |
| Fixes the following build error: |
| |
| util/comm.c:152:31: error: implicit declaration of function |
| 'reallocarray' [-Wimplicit-function-declaration] |
| 152 | tmp = reallocarray(comm_strs->strs, |
| | ^~~~~~~~~~~~ |
| |
| Fixes: 13ca628716c6 ("perf comm: Add reference count checking to 'struct comm_str'") |
| Reported-by: Ali Utku Selen <ali.utku.selen@arm.com> |
| Signed-off-by: James Clark <james.clark@linaro.org> |
| Reviewed-by: Ian Rogers <irogers@google.com> |
| Link: https://lore.kernel.org/r/20250129154405.777533-1-james.clark@linaro.org |
| Signed-off-by: Namhyung Kim <namhyung@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| tools/perf/Makefile.config | 10 ++++------ |
| tools/perf/util/comm.c | 2 ++ |
| 2 files changed, 6 insertions(+), 6 deletions(-) |
| |
| diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config |
| index a148ca9efca91..23dbb6bb91cf8 100644 |
| --- a/tools/perf/Makefile.config |
| +++ b/tools/perf/Makefile.config |
| @@ -497,13 +497,14 @@ ifeq ($(feature-setns), 1) |
| $(call detected,CONFIG_SETNS) |
| endif |
| |
| +ifeq ($(feature-reallocarray), 0) |
| + CFLAGS += -DCOMPAT_NEED_REALLOCARRAY |
| +endif |
| + |
| ifdef CORESIGHT |
| $(call feature_check,libopencsd) |
| ifeq ($(feature-libopencsd), 1) |
| CFLAGS += -DHAVE_CSTRACE_SUPPORT $(LIBOPENCSD_CFLAGS) |
| - ifeq ($(feature-reallocarray), 0) |
| - CFLAGS += -DCOMPAT_NEED_REALLOCARRAY |
| - endif |
| LDFLAGS += $(LIBOPENCSD_LDFLAGS) |
| EXTLIBS += $(OPENCSDLIBS) |
| $(call detected,CONFIG_LIBOPENCSD) |
| @@ -1103,9 +1104,6 @@ ifndef NO_AUXTRACE |
| ifndef NO_AUXTRACE |
| $(call detected,CONFIG_AUXTRACE) |
| CFLAGS += -DHAVE_AUXTRACE_SUPPORT |
| - ifeq ($(feature-reallocarray), 0) |
| - CFLAGS += -DCOMPAT_NEED_REALLOCARRAY |
| - endif |
| endif |
| endif |
| |
| diff --git a/tools/perf/util/comm.c b/tools/perf/util/comm.c |
| index 49b79cf0c5cc5..8aa456d7c2cd2 100644 |
| --- a/tools/perf/util/comm.c |
| +++ b/tools/perf/util/comm.c |
| @@ -5,6 +5,8 @@ |
| #include <internal/rc_check.h> |
| #include <linux/refcount.h> |
| #include <linux/zalloc.h> |
| +#include <tools/libc_compat.h> // reallocarray |
| + |
| #include "rwsem.h" |
| |
| DECLARE_RC_STRUCT(comm_str) { |
| -- |
| 2.39.5 |
| |