Commit f1db7afd authored by Kautuk Consul's avatar Kautuk Consul Committed by Linus Torvalds

mm/vmalloc.c: eliminate extra loop in pcpu_get_vm_areas error path

If either of the vas or vms arrays are not properly kzalloced, then the
code jumps to the err_free label.

The err_free label runs a loop to check and free each of the array members
of the vas and vms arrays which is not required for this situation as none
of the array members have been allocated till this point.

Eliminate the extra loop we have to go through by introducing a new label
err_free2 and then jumping to it.

[akpm@linux-foundation.org: remove now-unneeded tests]
Signed-off-by: default avatarKautuk Consul <consul.kautuk@gmail.com>
Acked-by: default avatarDavid Rientjes <rientjes@google.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 3f79768f
...@@ -2378,7 +2378,7 @@ struct vm_struct **pcpu_get_vm_areas(const unsigned long *offsets, ...@@ -2378,7 +2378,7 @@ struct vm_struct **pcpu_get_vm_areas(const unsigned long *offsets,
vms = kzalloc(sizeof(vms[0]) * nr_vms, GFP_KERNEL); vms = kzalloc(sizeof(vms[0]) * nr_vms, GFP_KERNEL);
vas = kzalloc(sizeof(vas[0]) * nr_vms, GFP_KERNEL); vas = kzalloc(sizeof(vas[0]) * nr_vms, GFP_KERNEL);
if (!vas || !vms) if (!vas || !vms)
goto err_free; goto err_free2;
for (area = 0; area < nr_vms; area++) { for (area = 0; area < nr_vms; area++) {
vas[area] = kzalloc(sizeof(struct vmap_area), GFP_KERNEL); vas[area] = kzalloc(sizeof(struct vmap_area), GFP_KERNEL);
...@@ -2476,11 +2476,10 @@ struct vm_struct **pcpu_get_vm_areas(const unsigned long *offsets, ...@@ -2476,11 +2476,10 @@ struct vm_struct **pcpu_get_vm_areas(const unsigned long *offsets,
err_free: err_free:
for (area = 0; area < nr_vms; area++) { for (area = 0; area < nr_vms; area++) {
if (vas)
kfree(vas[area]); kfree(vas[area]);
if (vms)
kfree(vms[area]); kfree(vms[area]);
} }
err_free2:
kfree(vas); kfree(vas);
kfree(vms); kfree(vms);
return NULL; return NULL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment