]> err.no Git - linux-2.6/commitdiff
x86, intel_cacheinfo: fix use-after-free cache_kobject
authorAkinobu Mita <akinobu.mita@gmail.com>
Tue, 15 Jul 2008 08:09:03 +0000 (17:09 +0900)
committerIngo Molnar <mingo@elte.hu>
Fri, 18 Jul 2008 15:49:33 +0000 (17:49 +0200)
This avoids calling kobject_uevent() with cache_kobject that has
already been deallocated in an error path.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/cpu/intel_cacheinfo.c

index 2c8afafa18e860ff98fafb243f2ba7964496c42d..ff517f0b8cc4c1ec8ade88ca534ec929736268a7 100644 (file)
@@ -780,15 +780,14 @@ static int __cpuinit cache_add_dev(struct sys_device * sys_dev)
                        }
                        kobject_put(per_cpu(cache_kobject, cpu));
                        cpuid4_cache_sysfs_exit(cpu);
-                       break;
+                       return retval;
                }
                kobject_uevent(&(this_object->kobj), KOBJ_ADD);
        }
-       if (!retval)
-               cpu_set(cpu, cache_dev_map);
+       cpu_set(cpu, cache_dev_map);
 
        kobject_uevent(per_cpu(cache_kobject, cpu), KOBJ_ADD);
-       return retval;
+       return 0;
 }
 
 static void __cpuinit cache_remove_dev(struct sys_device * sys_dev)