Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull perf fixes from Ingo Molnar: "A handful of CPU hotplug related fixes" * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: perf/core: Plug potential memory leak in CPU_UP_PREPARE perf/core: Remove the bogus and dangerous CPU_DOWN_FAILED hotplug state perf/core: Remove bogus UP_CANCELED hotplug state perf/x86/amd/uncore: Plug reference leak
This commit is contained in:
commit
06b74c658c
@ -323,6 +323,8 @@ static int amd_uncore_cpu_up_prepare(unsigned int cpu)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
|
if (amd_uncore_nb)
|
||||||
|
*per_cpu_ptr(amd_uncore_nb, cpu) = NULL;
|
||||||
kfree(uncore_nb);
|
kfree(uncore_nb);
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
@ -9206,7 +9206,7 @@ static void perf_event_init_cpu(int cpu)
|
|||||||
struct swevent_htable *swhash = &per_cpu(swevent_htable, cpu);
|
struct swevent_htable *swhash = &per_cpu(swevent_htable, cpu);
|
||||||
|
|
||||||
mutex_lock(&swhash->hlist_mutex);
|
mutex_lock(&swhash->hlist_mutex);
|
||||||
if (swhash->hlist_refcount > 0) {
|
if (swhash->hlist_refcount > 0 && !swevent_hlist_deref(swhash)) {
|
||||||
struct swevent_hlist *hlist;
|
struct swevent_hlist *hlist;
|
||||||
|
|
||||||
hlist = kzalloc_node(sizeof(*hlist), GFP_KERNEL, cpu_to_node(cpu));
|
hlist = kzalloc_node(sizeof(*hlist), GFP_KERNEL, cpu_to_node(cpu));
|
||||||
@ -9282,11 +9282,9 @@ perf_cpu_notify(struct notifier_block *self, unsigned long action, void *hcpu)
|
|||||||
switch (action & ~CPU_TASKS_FROZEN) {
|
switch (action & ~CPU_TASKS_FROZEN) {
|
||||||
|
|
||||||
case CPU_UP_PREPARE:
|
case CPU_UP_PREPARE:
|
||||||
case CPU_DOWN_FAILED:
|
|
||||||
perf_event_init_cpu(cpu);
|
perf_event_init_cpu(cpu);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CPU_UP_CANCELED:
|
|
||||||
case CPU_DOWN_PREPARE:
|
case CPU_DOWN_PREPARE:
|
||||||
perf_event_exit_cpu(cpu);
|
perf_event_exit_cpu(cpu);
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user