x86, UV: Correct failed topology memory leak
authorcpw@sgi.com <cpw@sgi.com>
Tue, 21 Jun 2011 12:21:32 +0000 (07:21 -0500)
committerIngo Molnar <mingo@elte.hu>
Tue, 21 Jun 2011 12:50:33 +0000 (14:50 +0200)
Fix a memory leak in init_per_cpu() when the topology check
fails.

The leak should never occur on deployed systems. It would only occur
in an unexpected topology that would make the BAU unuseable as a result.

Signed-off-by: Cliff Wickman <cpw@sgi.com>
Link: http://lkml.kernel.org/r/20110621122242.981533045@sgi.com
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/platform/uv/tlb_uv.c

index 5265842b8d0b1509ccb45ba9f6af6ebc9691482b..db8b915f54bc50ca23baad161d249d0382c649ab 100644 (file)
@@ -1797,15 +1797,20 @@ static int __init init_per_cpu(int nuvhubs, int base_part_pnode)
        uvhub_mask = kzalloc((nuvhubs+7)/8, GFP_KERNEL);
 
        if (get_cpu_topology(base_part_pnode, uvhub_descs, uvhub_mask))
-               return 1;
+               goto fail;
 
        if (summarize_uvhub_sockets(nuvhubs, uvhub_descs, uvhub_mask))
-               return 1;
+               goto fail;
 
        kfree(uvhub_descs);
        kfree(uvhub_mask);
        init_per_cpu_tunables();
        return 0;
+
+fail:
+       kfree(uvhub_descs);
+       kfree(uvhub_mask);
+       return 1;
 }
 
 /*