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  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 3 Apr 2007 18:16:03 -0700 (PDT)
From:	Christoph Lameter <clameter@....com>
To:	Badari Pulavarty <pbadari@...il.com>
cc:	Andrew Morton <akpm@...ux-foundation.org>,
	lkml <linux-kernel@...r.kernel.org>
Subject: Re: 2.6.21-rc5-mm4

On Tue, 3 Apr 2007, Badari Pulavarty wrote:

> Seems to be an issue with calibrate_delay() spinning in a tight
> loop :(
> 
> BTW, machine boots fine with SLAB code - not sure why ?

Interrupt disabled sigh.

Here is the fix:




SLUB: Fix numa bootstrap

NUMA bootstrap calls new_slab() if more than one node is found on bootup.
new_slab() assumes a standard slab context where interrupts must be
disabled. It enables interrupts for the call into the page allocator
and then disables them again. Interrupts do not have to be disabled
during on bootstrap because we still run single threaded there.

I dropped the interrupt preservation code just before SLUB v6 because
it looked useless there. SLUB worked on the following NUMA tests
that just had a single node. Sigh.

Enable interrupts after calling new_slab.

Signed-off-by: Christoph Lameter <clameter@....com>

Index: linux-2.6.21-rc5-mm4/mm/slub.c
===================================================================
--- linux-2.6.21-rc5-mm4.orig/mm/slub.c	2007-04-03 18:07:41.000000000 -0700
+++ linux-2.6.21-rc5-mm4/mm/slub.c	2007-04-03 18:08:17.000000000 -0700
@@ -1436,6 +1436,8 @@ static int init_kmem_cache_nodes(struct 
 
 			BUG_ON(s->size < sizeof(struct kmem_cache_node));
 			page = new_slab(kmalloc_caches, gfpflags, node);
+			/* new_slab() disables interupts */
+			local_irq_enable();
 
 			BUG_ON(!page);
 			n = page->freelist;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ