diff --git a/arch/sparc/kernel/bootmem.c b/arch/sparc/kernel/bootmem.c index 58d289de1e8f5f631648e163727f6aca8b4b6f62..26241a7ef5255e7439be01ecfd58e4a09725360a 100644 --- a/arch/sparc/kernel/bootmem.c +++ b/arch/sparc/kernel/bootmem.c @@ -28,6 +28,7 @@ #include <kernel/printk.h> #include <kernel/kernel.h> +#include <asm/irqflags.h> #include <chunk.h> @@ -101,7 +102,9 @@ void *bootmem_alloc(size_t size) if (!size) return NULL; + arch_local_irq_disable(); ptr = chunk_alloc(&phys_mem_pool, size); + arch_local_irq_enable(); if (!ptr) { pr_emerg("BOOTMEM: allocator out of memory\n"); @@ -120,7 +123,9 @@ void *bootmem_alloc(size_t size) void bootmem_free(void *ptr) { + arch_local_irq_disable(); chunk_free(&phys_mem_pool, ptr); + arch_local_irq_enable(); }