public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] - Fix slab corruption caused by alloc_cpumask_var_node()
@ 2009-04-02 21:27 Jack Steiner
  2009-04-02 21:39 ` Andrew Morton
  2009-04-02 21:42 ` [PATCH] - " Ingo Molnar
  0 siblings, 2 replies; 6+ messages in thread
From: Jack Steiner @ 2009-04-02 21:27 UTC (permalink / raw)
  To: akpm, mingo, rusty, sfr; +Cc: linux-kernel

Fix for slab corruption caused by alloc_cpumask_var_node() overwriting
the tail end of an off-stack cpumask.

Signed-off-by: Jack Steiner <steiner@sgi.com>
Acked-by: Mike Travis <travis.sgi.com>


---

Corrruption was found in latest linux-next (4/1)
	v2.6.29-12081-g421a9f3



 lib/cpumask.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Index: linux/lib/cpumask.c
===================================================================
--- linux.orig/lib/cpumask.c	2009-04-02 15:30:05.000000000 -0500
+++ linux/lib/cpumask.c	2009-04-02 15:57:44.000000000 -0500
@@ -109,10 +109,10 @@ bool alloc_cpumask_var_node(cpumask_var_
 #endif
 	/* FIXME: Bandaid to save us from old primitives which go to NR_CPUS. */
 	if (*mask) {
+		unsigned char *ptr = (unsigned char *)cpumask_bits(*mask);
 		unsigned int tail;
 		tail = BITS_TO_LONGS(NR_CPUS - nr_cpumask_bits) * sizeof(long);
-		memset(cpumask_bits(*mask) + cpumask_size() - tail,
-		       0, tail);
+		memset(ptr + cpumask_size() - tail, 0, tail);
 	}
 
 	return *mask != NULL;

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2009-04-05  5:32 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-04-02 21:27 [PATCH] - Fix slab corruption caused by alloc_cpumask_var_node() Jack Steiner
2009-04-02 21:39 ` Andrew Morton
2009-04-02 22:09   ` [PATCH] - Updated: " Jack Steiner
2009-04-02 22:23     ` Ingo Molnar
2009-04-02 21:42 ` [PATCH] - " Ingo Molnar
2009-04-05  5:31   ` Rusty Russell

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox