]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/2.6.32.17/revert-remove-rwsem-lock-from-cpufreq_gov_stop-call-second-call-site.patch
4.9-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 2.6.32.17 / revert-remove-rwsem-lock-from-cpufreq_gov_stop-call-second-call-site.patch
CommitLineData
6c840dcf
GKH
1From accd846698439ba18250e8fd5681af280446b853 Mon Sep 17 00:00:00 2001
2From: Andrej Gelenberg <andrej.gelenberg@udo.edu>
3Date: Fri, 14 May 2010 15:15:58 -0700
4Subject: [CPUFREQ] revert "[CPUFREQ] remove rwsem lock from CPUFREQ_GOV_STOP call (second call site)"
5
6From: Andrej Gelenberg <andrej.gelenberg@udo.edu>
7
8commit accd846698439ba18250e8fd5681af280446b853 upstream.
9
10395913d0b1db37092ea3d9d69b832183b1dd84c5 ("[CPUFREQ] remove rwsem lock
11from CPUFREQ_GOV_STOP call (second call site)") is not needed, because
12there is no rwsem lock in cpufreq_ondemand and cpufreq_conservative
13anymore. Lock should not be released until the work done.
14
15Addresses https://bugzilla.kernel.org/show_bug.cgi?id=1594
16
17Signed-off-by: Andrej Gelenberg <andrej.gelenberg@udo.edu>
18Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
19Cc: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
20Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
21Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
22Signed-off-by: Dave Jones <davej@redhat.com>
23Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
24
25---
26 drivers/cpufreq/cpufreq.c | 11 +----------
27 1 file changed, 1 insertion(+), 10 deletions(-)
28
29--- a/drivers/cpufreq/cpufreq.c
30+++ b/drivers/cpufreq/cpufreq.c
31@@ -1741,17 +1741,8 @@ static int __cpufreq_set_policy(struct c
32 dprintk("governor switch\n");
33
34 /* end old governor */
35- if (data->governor) {
36- /*
37- * Need to release the rwsem around governor
38- * stop due to lock dependency between
39- * cancel_delayed_work_sync and the read lock
40- * taken in the delayed work handler.
41- */
42- unlock_policy_rwsem_write(data->cpu);
43+ if (data->governor)
44 __cpufreq_governor(data, CPUFREQ_GOV_STOP);
45- lock_policy_rwsem_write(data->cpu);
46- }
47
48 /* start new governor */
49 data->governor = policy->governor;