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: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 23 Nov 2011 09:14:38 -0600 (CST)
From:	Christoph Lameter <cl@...ux.com>
To:	Pekka Enberg <penberg@...nel.org>
cc:	Christian Kujau <lists@...dbynature.de>,
	Benjamin Herrenschmidt <benh@...nel.crashing.org>,
	Eric Dumazet <eric.dumazet@...il.com>,
	Markus Trippelsdorf <markus@...ppelsdorf.de>,
	"Alex,Shi" <alex.shi@...el.com>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	"linux-mm@...ck.org" <linux-mm@...ck.org>,
	Matt Mackall <mpm@...enic.com>,
	"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
	Tejun Heo <tj@...nel.org>, David Rientjes <rientjes@...gle.com>
Subject: slub: use irqsafe_cpu_cmpxchg for put_cpu_partial

On Wed, 23 Nov 2011, Pekka Enberg wrote:

> 2011/11/23 Christian Kujau <lists@...dbynature.de>:
> > OK, with Christoph's patch applied, 3.2.0-rc2-00274-g6fe4c6d-dirty survives
> > on this machine, with the disk & cpu workload that caused the machine to
> > panic w/o the patch. Load was at 4-5 this time, which is expected for this
> > box. I'll run a few more tests later on, but it seems ok for now.
> >
> > I couldn't resist and ran "slabinfo" anyway (after the workload!) - the
> > box survived, nothing was printed in syslog either. Output attached.
>
> Christoph, Eric, would you mind sending me the final patches that
> Christian tested? Maybe CC David too for extra pair of eyes.

I think he only tested the patch that he showed us. Here is the patch
cleaned up. Do you Want me to feed you the debug fixes patch by patch as
well?

Subject: slub: use irqsafe_cpu_cmpxchg for put_cpu_partial

The cmpxchg must be irq safe. The fallback for this_cpu_cmpxchg only
disables preemption which results in per cpu partial page operation
potentially failing on non x86 platforms.

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

---
 mm/slub.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6/mm/slub.c
===================================================================
--- linux-2.6.orig/mm/slub.c	2011-11-23 09:10:48.000000000 -0600
+++ linux-2.6/mm/slub.c	2011-11-23 09:10:57.000000000 -0600
@@ -1969,7 +1969,7 @@ int put_cpu_partial(struct kmem_cache *s
 		page->pobjects = pobjects;
 		page->next = oldpage;

-	} while (this_cpu_cmpxchg(s->cpu_slab->partial, oldpage, page) != oldpage);
+	} while (irqsafe_cpu_cmpxchg(s->cpu_slab->partial, oldpage, page) != oldpage);
 	stat(s, CPU_PARTIAL_FREE);
 	return pobjects;
 }
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ