Hi Peter, Ingo and Arnaldo,
Could you help review this and have this fix merged in next RC? The perf
is totaly broken now! Thanks.
On Tue, Feb 12, 2019 at 11:52:21PM +0800, Changbin Du wrote:
> Perf tool now is broken by commit 9dff0aa95a32 ("perf/core: Don't WARN()
> for impossible ring-buffer sizes"). The get_order() should be used but not
> the order_base_2(). This mistake makes mmap() on perf fd always fail.
>
> Fixes: 9dff0aa95a32 ("perf/core: Don't WARN() for impossible ring-buffer
> sizes")
> Signed-off-by: Changbin Du <[email protected]>
> Cc: Mark Rutland <[email protected]>
> Cc: Julien Thierry <[email protected]>
> Cc: Linus Torvalds <[email protected]>
> Cc: Jiri Olsa <[email protected]>
> Cc: Peter Zijlstra <[email protected]>
> Cc: Ingo Molnar <[email protected]>
> Cc: Alexander Shishkin <[email protected]>
> Cc: <[email protected]>
> ---
> kernel/events/ring_buffer.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/events/ring_buffer.c b/kernel/events/ring_buffer.c
> index 309ef5a64af5..55faafca4a6e 100644
> --- a/kernel/events/ring_buffer.c
> +++ b/kernel/events/ring_buffer.c
> @@ -734,7 +734,7 @@ struct ring_buffer *rb_alloc(int nr_pages, long
> watermark, int cpu, int flags)
> size = sizeof(struct ring_buffer);
> size += nr_pages * sizeof(void *);
>
> - if (order_base_2(size) >= MAX_ORDER)
> + if (get_order(size) >= MAX_ORDER)
> goto fail;
>
> rb = kzalloc(size, GFP_KERNEL);
> --
> 2.19.1
>
--
Cheers,
Changbin Du