perf test: Fix variable length array undefined behavior in bp_account
Fix: tests/bp_account.c:154:9: runtime error: variable length array bound evaluates to non-positive value 0 by switching from a variable length to an allocated array. Signed-off-by: Ian Rogers <irogers@google.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Link: https://lore.kernel.org/r/20220610180247.444798-1-irogers@google.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
94725994cf
commit
cc2145526c
|
@ -151,11 +151,21 @@ static int detect_ioctl(void)
|
|||
static int detect_share(int wp_cnt, int bp_cnt)
|
||||
{
|
||||
struct perf_event_attr attr;
|
||||
int i, fd[wp_cnt + bp_cnt], ret;
|
||||
int i, *fd = NULL, ret = -1;
|
||||
|
||||
if (wp_cnt + bp_cnt == 0)
|
||||
return 0;
|
||||
|
||||
fd = malloc(sizeof(int) * (wp_cnt + bp_cnt));
|
||||
if (!fd)
|
||||
return -1;
|
||||
|
||||
for (i = 0; i < wp_cnt; i++) {
|
||||
fd[i] = wp_event((void *)&the_var, &attr);
|
||||
TEST_ASSERT_VAL("failed to create wp\n", fd[i] != -1);
|
||||
if (fd[i] == -1) {
|
||||
pr_err("failed to create wp\n");
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
|
||||
for (; i < (bp_cnt + wp_cnt); i++) {
|
||||
|
@ -166,9 +176,11 @@ static int detect_share(int wp_cnt, int bp_cnt)
|
|||
|
||||
ret = i != (bp_cnt + wp_cnt);
|
||||
|
||||
out:
|
||||
while (i--)
|
||||
close(fd[i]);
|
||||
|
||||
free(fd);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue