diff options
author | Cyrill Gorcunov <gorcunov@gmail.com> | 2008-03-02 15:28:24 -0500 |
---|---|---|
committer | Christoph Lameter <clameter@sgi.com> | 2008-03-03 15:22:32 -0500 |
commit | 62e5c4b4d6351707346695fd9e151b6cda85cbe1 (patch) | |
tree | 66a8e4a842d4bcd2f87e28bb2faac19e75e355b3 /mm/slub.c | |
parent | f619cfe1bda809a97c407f4c723eb3235ecd64e5 (diff) |
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/slub.c')
-rw-r--r-- | mm/slub.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -3564,8 +3564,8 @@ enum slab_stat_type { | |||
3564 | #define SO_CPU (1 << SL_CPU) | 3564 | #define SO_CPU (1 << SL_CPU) |
3565 | #define SO_OBJECTS (1 << SL_OBJECTS) | 3565 | #define SO_OBJECTS (1 << SL_OBJECTS) |
3566 | 3566 | ||
3567 | static unsigned long show_slab_objects(struct kmem_cache *s, | 3567 | static ssize_t show_slab_objects(struct kmem_cache *s, |
3568 | char *buf, unsigned long flags) | 3568 | char *buf, unsigned long flags) |
3569 | { | 3569 | { |
3570 | unsigned long total = 0; | 3570 | unsigned long total = 0; |
3571 | int cpu; | 3571 | int cpu; |
@@ -3575,6 +3575,8 @@ static unsigned long show_slab_objects(struct kmem_cache *s, | |||
3575 | unsigned long *per_cpu; | 3575 | unsigned long *per_cpu; |
3576 | 3576 | ||
3577 | nodes = kzalloc(2 * sizeof(unsigned long) * nr_node_ids, GFP_KERNEL); | 3577 | nodes = kzalloc(2 * sizeof(unsigned long) * nr_node_ids, GFP_KERNEL); |
3578 | if (!nodes) | ||
3579 | return -ENOMEM; | ||
3578 | per_cpu = nodes + nr_node_ids; | 3580 | per_cpu = nodes + nr_node_ids; |
3579 | 3581 | ||
3580 | for_each_possible_cpu(cpu) { | 3582 | for_each_possible_cpu(cpu) { |