x86, intel_cacheinfo: fix use-after-free cache_kobject
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>
This commit is contained in:
Родитель
2b7207a6b5
Коммит
8b2b9c1af0
|
@ -780,15 +780,14 @@ static int __cpuinit cache_add_dev(struct sys_device * sys_dev)
|
||||||
}
|
}
|
||||||
kobject_put(per_cpu(cache_kobject, cpu));
|
kobject_put(per_cpu(cache_kobject, cpu));
|
||||||
cpuid4_cache_sysfs_exit(cpu);
|
cpuid4_cache_sysfs_exit(cpu);
|
||||||
break;
|
return retval;
|
||||||
}
|
}
|
||||||
kobject_uevent(&(this_object->kobj), KOBJ_ADD);
|
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);
|
kobject_uevent(per_cpu(cache_kobject, cpu), KOBJ_ADD);
|
||||||
return retval;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __cpuinit cache_remove_dev(struct sys_device * sys_dev)
|
static void __cpuinit cache_remove_dev(struct sys_device * sys_dev)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче