diff options
author | Aaron Tomlin <atomlin@redhat.com> | 2013-04-26 16:15:34 +0100 |
---|---|---|
committer | Pekka Enberg <penberg@kernel.org> | 2013-05-01 10:57:43 +0300 |
commit | 14e50c6a9bc2b283bb4021026226268312ceefdd (patch) | |
tree | 37543ffb4bbeaf9cc4fb191c531f4956f7d8357c | |
parent | 7cccd80b4397699902aced1ad3d692d384aaab77 (diff) | |
download | linux-3.10-14e50c6a9bc2b283bb4021026226268312ceefdd.tar.gz linux-3.10-14e50c6a9bc2b283bb4021026226268312ceefdd.tar.bz2 linux-3.10-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.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/mm/slab.c b/mm/slab.c index 910df632683..a98f8db9367 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); |