diff options
author | Paul Gortmaker <paul.gortmaker@windriver.com> | 2017-11-02 12:27:22 -0400 |
---|---|---|
committer | Paul Gortmaker <paul.gortmaker@windriver.com> | 2017-11-02 12:27:22 -0400 |
commit | 297f47e23a407d7d93a43edc0061a0a5c90bb547 (patch) | |
tree | 587bf3ac77359f56a44d3e2bcae38debccb0b13d | |
parent | 389865899579c374e5532ca906f1c9425fe1dd5e (diff) | |
download | longterm-queue-4.8-297f47e23a407d7d93a43edc0061a0a5c90bb547.tar.gz |
hotplug: delete patch n/a for 4.8.x kernel
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-rw-r--r-- | queue/cpu-hotplug-Serialize-callback-invocations-proper.patch | 155 | ||||
-rw-r--r-- | queue/series | 1 |
2 files changed, 0 insertions, 156 deletions
diff --git a/queue/cpu-hotplug-Serialize-callback-invocations-proper.patch b/queue/cpu-hotplug-Serialize-callback-invocations-proper.patch deleted file mode 100644 index cb8e2a6..0000000 --- a/queue/cpu-hotplug-Serialize-callback-invocations-proper.patch +++ /dev/null @@ -1,155 +0,0 @@ -From dc434e056fe1dada20df7ba07f32739d3a701adf Mon Sep 17 00:00:00 2001 -From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> -Date: Tue, 14 Mar 2017 16:06:45 +0100 -Subject: [PATCH] cpu/hotplug: Serialize callback invocations proper - -commit dc434e056fe1dada20df7ba07f32739d3a701adf upstream. - -The setup/remove_state/instance() functions in the hotplug core code are -serialized against concurrent CPU hotplug, but unfortunately not serialized -against themself. - -As a consequence a concurrent invocation of these function results in -corruption of the callback machinery because two instances try to invoke -callbacks on remote cpus at the same time. This results in missing callback -invocations and initiator threads waiting forever on the completion. - -The obvious solution to replace get_cpu_online() with cpu_hotplug_begin() -is not possible because at least one callsite calls into these functions -from a get_online_cpu() locked region. - -Extend the protection scope of the cpuhp_state_mutex from solely protecting -the state arrays to cover the callback invocation machinery as well. - -Fixes: 5b7aa87e0482 ("cpu/hotplug: Implement setup/removal interface") -Reported-and-tested-by: Bart Van Assche <Bart.VanAssche@sandisk.com> -Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> -Cc: hpa@zytor.com -Cc: mingo@kernel.org -Cc: akpm@linux-foundation.org -Cc: torvalds@linux-foundation.org -Link: http://lkml.kernel.org/r/20170314150645.g4tdyoszlcbajmna@linutronix.de -Signed-off-by: Thomas Gleixner <tglx@linutronix.de> - -diff --git a/kernel/cpu.c b/kernel/cpu.c -index f7c063239fa5..37b223e4fc05 100644 ---- a/kernel/cpu.c -+++ b/kernel/cpu.c -@@ -1335,26 +1335,21 @@ static int cpuhp_store_callbacks(enum cpuhp_state state, const char *name, - struct cpuhp_step *sp; - int ret = 0; - -- mutex_lock(&cpuhp_state_mutex); -- - if (state == CPUHP_AP_ONLINE_DYN || state == CPUHP_BP_PREPARE_DYN) { - ret = cpuhp_reserve_state(state); - if (ret < 0) -- goto out; -+ return ret; - state = ret; - } - sp = cpuhp_get_step(state); -- if (name && sp->name) { -- ret = -EBUSY; -- goto out; -- } -+ if (name && sp->name) -+ return -EBUSY; -+ - sp->startup.single = startup; - sp->teardown.single = teardown; - sp->name = name; - sp->multi_instance = multi_instance; - INIT_HLIST_HEAD(&sp->list); --out: -- mutex_unlock(&cpuhp_state_mutex); - return ret; - } - -@@ -1428,6 +1423,7 @@ int __cpuhp_state_add_instance(enum cpuhp_state state, struct hlist_node *node, - return -EINVAL; - - get_online_cpus(); -+ mutex_lock(&cpuhp_state_mutex); - - if (!invoke || !sp->startup.multi) - goto add_node; -@@ -1447,16 +1443,14 @@ int __cpuhp_state_add_instance(enum cpuhp_state state, struct hlist_node *node, - if (ret) { - if (sp->teardown.multi) - cpuhp_rollback_install(cpu, state, node); -- goto err; -+ goto unlock; - } - } - add_node: - ret = 0; -- mutex_lock(&cpuhp_state_mutex); - hlist_add_head(node, &sp->list); -+unlock: - mutex_unlock(&cpuhp_state_mutex); -- --err: - put_online_cpus(); - return ret; - } -@@ -1491,6 +1485,7 @@ int __cpuhp_setup_state(enum cpuhp_state state, - return -EINVAL; - - get_online_cpus(); -+ mutex_lock(&cpuhp_state_mutex); - - ret = cpuhp_store_callbacks(state, name, startup, teardown, - multi_instance); -@@ -1524,6 +1519,7 @@ int __cpuhp_setup_state(enum cpuhp_state state, - } - } - out: -+ mutex_unlock(&cpuhp_state_mutex); - put_online_cpus(); - /* - * If the requested state is CPUHP_AP_ONLINE_DYN, return the -@@ -1547,6 +1543,8 @@ int __cpuhp_state_remove_instance(enum cpuhp_state state, - return -EINVAL; - - get_online_cpus(); -+ mutex_lock(&cpuhp_state_mutex); -+ - if (!invoke || !cpuhp_get_teardown_cb(state)) - goto remove; - /* -@@ -1563,7 +1561,6 @@ int __cpuhp_state_remove_instance(enum cpuhp_state state, - } - - remove: -- mutex_lock(&cpuhp_state_mutex); - hlist_del(node); - mutex_unlock(&cpuhp_state_mutex); - put_online_cpus(); -@@ -1571,6 +1568,7 @@ remove: - return 0; - } - EXPORT_SYMBOL_GPL(__cpuhp_state_remove_instance); -+ - /** - * __cpuhp_remove_state - Remove the callbacks for an hotplug machine state - * @state: The state to remove -@@ -1589,6 +1587,7 @@ void __cpuhp_remove_state(enum cpuhp_state state, bool invoke) - - get_online_cpus(); - -+ mutex_lock(&cpuhp_state_mutex); - if (sp->multi_instance) { - WARN(!hlist_empty(&sp->list), - "Error: Removing state %d which has instances left.\n", -@@ -1613,6 +1612,7 @@ void __cpuhp_remove_state(enum cpuhp_state state, bool invoke) - } - remove: - cpuhp_store_callbacks(state, NULL, NULL, NULL, false); -+ mutex_unlock(&cpuhp_state_mutex); - put_online_cpus(); - } - EXPORT_SYMBOL(__cpuhp_remove_state); --- -2.12.0 - diff --git a/queue/series b/queue/series index adee4ec..d9618bb 100644 --- a/queue/series +++ b/queue/series @@ -63,7 +63,6 @@ timerfd-Protect-the-might-cancel-mechanism-proper.patch scsi-storvsc-Workaround-for-virtual-DVD-SCSI-version.patch hwmon-it87-Avoid-registering-the-same-chip-on-both-S.patch ceph-try-getting-buffer-capability-for-readahead-fad.patch -cpu-hotplug-Serialize-callback-invocations-proper.patch dm-ioctl-prevent-stack-leak-in-dm-ioctl-call.patch 9p-fix-a-potential-acl-leak.patch drm-sti-fix-GDP-size-to-support-up-to-UHD-resolution.patch |