summaryrefslogtreecommitdiffstats
path: root/mm
diff options
context:
space:
mode:
authorCyrill Gorcunov <gorcunov@gmail.com>2008-03-02 21:28:24 +0100
committerChristoph Lameter <clameter@sgi.com>2008-03-03 21:22:32 +0100
commit62e5c4b4d6351707346695fd9e151b6cda85cbe1 (patch)
tree66a8e4a842d4bcd2f87e28bb2faac19e75e355b3 /mm
parentslub: Add kmalloc_large_node() to support kmalloc_node fallback (diff)
downloadlinux-62e5c4b4d6351707346695fd9e151b6cda85cbe1.tar.xz
linux-62e5c4b4d6351707346695fd9e151b6cda85cbe1.zip
slub: fix possible NULL pointer dereference
This patch fix possible NULL pointer dereference if kzalloc failed. To be able to return proper error code the function return type is changed to ssize_t (according to callees and sysfs definitions). Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com> Signed-off-by: Christoph Lameter <clameter@sgi.com>
Diffstat (limited to 'mm')
-rw-r--r--mm/slub.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/mm/slub.c b/mm/slub.c
index ecacacdce9d7..0863fd38a5ce 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -3564,8 +3564,8 @@ enum slab_stat_type {
#define SO_CPU (1 << SL_CPU)
#define SO_OBJECTS (1 << SL_OBJECTS)
-static unsigned long show_slab_objects(struct kmem_cache *s,
- char *buf, unsigned long flags)
+static ssize_t show_slab_objects(struct kmem_cache *s,
+ char *buf, unsigned long flags)
{
unsigned long total = 0;
int cpu;
@@ -3575,6 +3575,8 @@ static unsigned long show_slab_objects(struct kmem_cache *s,
unsigned long *per_cpu;
nodes = kzalloc(2 * sizeof(unsigned long) * nr_node_ids, GFP_KERNEL);
+ if (!nodes)
+ return -ENOMEM;
per_cpu = nodes + nr_node_ids;
for_each_possible_cpu(cpu) {