diff options
Diffstat (limited to 'drivers/macintosh')
-rw-r--r-- | drivers/macintosh/ams/ams-core.c | 2 | ||||
-rw-r--r-- | drivers/macintosh/mac_hid.c | 8 | ||||
-rw-r--r-- | drivers/macintosh/rack-meter.c | 4 |
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 | ||
24 | static struct input_dev *mac_hid_emumouse_dev; | 24 | static struct input_dev *mac_hid_emumouse_dev; |
25 | 25 | ||
26 | static DEFINE_MUTEX(mac_hid_emumouse_mutex); | ||
27 | |||
26 | static int mac_hid_create_emumouse(void) | 28 | static 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 | ||
286 | static void __devexit rackmeter_stop_cpu_sniffer(struct rackmeter *rm) | 286 | static 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 | ||
292 | static int __devinit rackmeter_setup(struct rackmeter *rm) | 292 | static int __devinit rackmeter_setup(struct rackmeter *rm) |