perf/core: fix MAX_ORDER usage in rb_alloc_aux_page()
authorKirill A. Shutemov <kirill.shutemov@linux.intel.com>
Wed, 15 Mar 2023 11:31:29 +0000 (14:31 +0300)
committerAndrew Morton <akpm@linux-foundation.org>
Thu, 6 Apr 2023 02:42:45 +0000 (19:42 -0700)
MAX_ORDER is not inclusive: the maximum allocation order buddy allocator
can deliver is MAX_ORDER-1.

Fix MAX_ORDER usage in rb_alloc_aux_page().

Link: https://lkml.kernel.org/r/20230315113133.11326-7-kirill.shutemov@linux.intel.com
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
kernel/events/ring_buffer.c

index 273a0fe..d6bbdb7 100644 (file)
@@ -609,8 +609,8 @@ static struct page *rb_alloc_aux_page(int node, int order)
 {
        struct page *page;
 
-       if (order > MAX_ORDER)
-               order = MAX_ORDER;
+       if (order >= MAX_ORDER)
+               order = MAX_ORDER - 1;
 
        do {
                page = alloc_pages_node(node, PERF_AUX_GFP, order);