summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Tomlin <atomlin@redhat.com>2013-04-26 16:15:34 +0100
committerPekka Enberg <penberg@kernel.org>2013-05-01 10:57:43 +0300
commit14e50c6a9bc2b283bb4021026226268312ceefdd (patch)
tree37543ffb4bbeaf9cc4fb191c531f4956f7d8357c
parent7cccd80b4397699902aced1ad3d692d384aaab77 (diff)
downloadlwn-14e50c6a9bc2b283bb4021026226268312ceefdd.tar.gz
lwn-14e50c6a9bc2b283bb4021026226268312ceefdd.zip
mm: slab: Verify the nodeid passed to ____cache_alloc_node
If the nodeid is > num_online_nodes() this can cause an Oops and a panic(). The purpose of this patch is to assert if this condition is true to aid debugging efforts rather than some random NULL pointer dereference or page fault. This patch is in response to BZ#42967 [1]. Using VM_BUG_ON so it's used only when CONFIG_DEBUG_VM is set, given that ____cache_alloc_node() is a hot code path. [1]: https://bugzilla.kernel.org/show_bug.cgi?id=42967 Signed-off-by: Aaron Tomlin <atomlin@redhat.com> Reviewed-by: Rik van Riel <riel@redhat.com> Acked-by: Christoph Lameter <cl@linux.com> Acked-by: Rafael Aquini <aquini@redhat.com> Acked-by: David Rientjes <rientjes@google.com> Signed-off-by: Pekka Enberg <penberg@kernel.org>
-rw-r--r--mm/slab.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/mm/slab.c b/mm/slab.c
index 910df6326831..a98f8db93670 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -3289,6 +3289,7 @@ static void *____cache_alloc_node(struct kmem_cache *cachep, gfp_t flags,
void *obj;
int x;
+ VM_BUG_ON(nodeid > num_online_nodes());
n = cachep->node[nodeid];
BUG_ON(!n);