lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 19 Mar 2020 14:10:41 -0000 From: "tip-bot2 for Alexey Budankov" <tip-bot2@...utronix.de> To: linux-tip-commits@...r.kernel.org Cc: Alexey Budankov <alexey.budankov@...ux.intel.com>, Alexander Shishkin <alexander.shishkin@...ux.intel.com>, Andi Kleen <ak@...ux.intel.com>, Jiri Olsa <jolsa@...hat.com>, Namhyung Kim <namhyung@...nel.org>, Peter Zijlstra <peterz@...radead.org>, Arnaldo Carvalho de Melo <acme@...hat.com>, x86 <x86@...nel.org>, LKML <linux-kernel@...r.kernel.org> Subject: [tip: perf/core] perf record: Fix binding of AIO user space buffers to nodes The following commit has been merged into the perf/core branch of tip: Commit-ID: 44d462acc0bf3eabe1522471fd1f683d8ce612cb Gitweb: https://git.kernel.org/tip/44d462acc0bf3eabe1522471fd1f683d8ce612cb Author: Alexey Budankov <alexey.budankov@...ux.intel.com> AuthorDate: Thu, 12 Mar 2020 15:21:45 +03:00 Committer: Arnaldo Carvalho de Melo <acme@...hat.com> CommitterDate: Thu, 12 Mar 2020 11:32:46 -03:00 perf record: Fix binding of AIO user space buffers to nodes Correct maxnode parameter value passed to mbind() syscall to be the amount of node mask bits to analyze plus 1. Dynamically allocate node mask memory depending on the index of node of cpu being profiled. Fixes: c44a8b44ca9f ("perf record: Bind the AIO user space buffers to nodes") Signed-off-by: Alexey Budankov <alexey.budankov@...ux.intel.com> Cc: Alexander Shishkin <alexander.shishkin@...ux.intel.com> Cc: Andi Kleen <ak@...ux.intel.com> Cc: Jiri Olsa <jolsa@...hat.com> Cc: Namhyung Kim <namhyung@...nel.org> Cc: Peter Zijlstra <peterz@...radead.org> Link: http://lore.kernel.org/lkml/c7ea8ffe-1357-bf9e-3a89-1da1d8e9b75b@linux.intel.com [ Remove leftover nr_bits + 1 comment in mbind() call ] Signed-off-by: Arnaldo Carvalho de Melo <acme@...hat.com> --- tools/perf/util/mmap.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/tools/perf/util/mmap.c b/tools/perf/util/mmap.c index 3b664fa..ab7108d 100644 --- a/tools/perf/util/mmap.c +++ b/tools/perf/util/mmap.c @@ -98,20 +98,29 @@ static int perf_mmap__aio_bind(struct mmap *map, int idx, int cpu, int affinity) { void *data; size_t mmap_len; - unsigned long node_mask; + unsigned long *node_mask; + unsigned long node_index; + int err = 0; if (affinity != PERF_AFFINITY_SYS && cpu__max_node() > 1) { data = map->aio.data[idx]; mmap_len = mmap__mmap_len(map); - node_mask = 1UL << cpu__get_node(cpu); - if (mbind(data, mmap_len, MPOL_BIND, &node_mask, 1, 0)) { - pr_err("Failed to bind [%p-%p] AIO buffer to node %d: error %m\n", - data, data + mmap_len, cpu__get_node(cpu)); + node_index = cpu__get_node(cpu); + node_mask = bitmap_alloc(node_index + 1); + if (!node_mask) { + pr_err("Failed to allocate node mask for mbind: error %m\n"); return -1; } + set_bit(node_index, node_mask); + if (mbind(data, mmap_len, MPOL_BIND, node_mask, node_index + 1 + 1, 0)) { + pr_err("Failed to bind [%p-%p] AIO buffer to node %lu: error %m\n", + data, data + mmap_len, node_index); + err = -1; + } + bitmap_free(node_mask); } - return 0; + return err; } #else /* !HAVE_LIBNUMA_SUPPORT */ static int perf_mmap__aio_alloc(struct mmap *map, int idx)
Powered by blists - more mailing lists