aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/macintosh
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/macintosh')
-rw-r--r--drivers/macintosh/ams/ams-core.c2
-rw-r--r--drivers/macintosh/mac_hid.c8
-rw-r--r--drivers/macintosh/rack-meter.c4
3 files changed, 11 insertions, 3 deletions
diff --git a/drivers/macintosh/ams/ams-core.c b/drivers/macintosh/ams/ams-core.c
index 2ad62c339cd2..399beb1638d1 100644
--- a/drivers/macintosh/ams/ams-core.c
+++ b/drivers/macintosh/ams/ams-core.c
@@ -226,7 +226,7 @@ void ams_sensor_detach(void)
226 * We do this after ams_info.exit(), because an interrupt might 226 * We do this after ams_info.exit(), because an interrupt might
227 * have arrived before disabling them. 227 * have arrived before disabling them.
228 */ 228 */
229 flush_scheduled_work(); 229 flush_work_sync(&ams_info.worker);
230 230
231 /* Remove device */ 231 /* Remove device */
232 of_device_unregister(ams_info.of_dev); 232 of_device_unregister(ams_info.of_dev);
diff --git a/drivers/macintosh/mac_hid.c b/drivers/macintosh/mac_hid.c
index 067f9962f499..6a82388505f0 100644
--- a/drivers/macintosh/mac_hid.c
+++ b/drivers/macintosh/mac_hid.c
@@ -23,6 +23,8 @@ static int mouse_button3_keycode = KEY_RIGHTALT; /* right option key */
23 23
24static struct input_dev *mac_hid_emumouse_dev; 24static struct input_dev *mac_hid_emumouse_dev;
25 25
26static DEFINE_MUTEX(mac_hid_emumouse_mutex);
27
26static int mac_hid_create_emumouse(void) 28static int mac_hid_create_emumouse(void)
27{ 29{
28 static struct lock_class_key mac_hid_emumouse_dev_event_class; 30 static struct lock_class_key mac_hid_emumouse_dev_event_class;
@@ -187,6 +189,10 @@ static int mac_hid_toggle_emumouse(ctl_table *table, int write,
187 int old_val = *valp; 189 int old_val = *valp;
188 int rc; 190 int rc;
189 191
192 rc = mutex_lock_killable(&mac_hid_emumouse_mutex);
193 if (rc)
194 return rc;
195
190 rc = proc_dointvec(table, write, buffer, lenp, ppos); 196 rc = proc_dointvec(table, write, buffer, lenp, ppos);
191 197
192 if (rc == 0 && write && *valp != old_val) { 198 if (rc == 0 && write && *valp != old_val) {
@@ -202,6 +208,8 @@ static int mac_hid_toggle_emumouse(ctl_table *table, int write,
202 if (rc) 208 if (rc)
203 *valp = old_val; 209 *valp = old_val;
204 210
211 mutex_unlock(&mac_hid_emumouse_mutex);
212
205 return rc; 213 return rc;
206} 214}
207 215
diff --git a/drivers/macintosh/rack-meter.c b/drivers/macintosh/rack-meter.c
index 53cce3a5da23..39f660b2a60d 100644
--- a/drivers/macintosh/rack-meter.c
+++ b/drivers/macintosh/rack-meter.c
@@ -285,8 +285,8 @@ static void __devinit rackmeter_init_cpu_sniffer(struct rackmeter *rm)
285 285
286static void __devexit rackmeter_stop_cpu_sniffer(struct rackmeter *rm) 286static void __devexit rackmeter_stop_cpu_sniffer(struct rackmeter *rm)
287{ 287{
288 cancel_rearming_delayed_work(&rm->cpu[0].sniffer); 288 cancel_delayed_work_sync(&rm->cpu[0].sniffer);
289 cancel_rearming_delayed_work(&rm->cpu[1].sniffer); 289 cancel_delayed_work_sync(&rm->cpu[1].sniffer);
290} 290}
291 291
292static int __devinit rackmeter_setup(struct rackmeter *rm) 292static int __devinit rackmeter_setup(struct rackmeter *rm)