summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Gortmaker <paul.gortmaker@windriver.com>2017-11-02 12:27:22 -0400
committerPaul Gortmaker <paul.gortmaker@windriver.com>2017-11-02 12:27:22 -0400
commit297f47e23a407d7d93a43edc0061a0a5c90bb547 (patch)
tree587bf3ac77359f56a44d3e2bcae38debccb0b13d
parent389865899579c374e5532ca906f1c9425fe1dd5e (diff)
downloadlongterm-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.patch155
-rw-r--r--queue/series1
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