]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
sparc64: Zero pages on allocation for mondo and error queues.
authorLiam R. Howlett <Liam.Howlett@Oracle.com>
Thu, 5 Jan 2017 20:58:41 +0000 (15:58 -0500)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 9 Mar 2017 03:30:06 +0000 (19:30 -0800)
Error queues use a non-zero first word to detect if the queues are full.
Using pages that have not been zeroed may result in false positive
overflow events.  These queues are set up once during boot so zeroing
all mondo and error queue pages is safe.

Note that this does not always occur because the page allocation for
these queues is so early in the boot cycle that higher number CPUs get
fresh pages.  It is only when traps are serviced with lower number CPUs
who were given already used pages that this issue is exposed.

orabug: 23054018

Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
Signed-off-by: Allen Pais <allen.pais@oracle.com>
arch/sparc/kernel/irq_64.c

index 787076a752c70148e3e2431c7945e2c4e8bfee34..d8e5cc9c7f10ff79089fcc3c955f8b662c26bbc8 100644 (file)
@@ -1156,7 +1156,7 @@ static int alloc_one_queue(unsigned long *pa_ptr, unsigned long qmask)
        unsigned long order = get_order(size);
        unsigned long p;
 
-       p = __get_free_pages(GFP_KERNEL | __GFP_COMP, order);
+       p = __get_free_pages(GFP_KERNEL | __GFP_COMP | __GFP_ZERO, order);
        if (!p) {
                pr_err("SUN4V: Error, cannot allocate queue.\n");
                return -ENOMEM;