diff options
Diffstat (limited to 'drivers/char')
-rw-r--r-- | drivers/char/apm-emulation.c | 12 | ||||
-rw-r--r-- | drivers/char/hvc_console.c | 1 |
2 files changed, 2 insertions, 11 deletions
diff --git a/drivers/char/apm-emulation.c b/drivers/char/apm-emulation.c index 179c7a3b6e75..ec116df919d9 100644 --- a/drivers/char/apm-emulation.c +++ b/drivers/char/apm-emulation.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/sched.h> | 20 | #include <linux/sched.h> |
21 | #include <linux/pm.h> | 21 | #include <linux/pm.h> |
22 | #include <linux/apm-emulation.h> | 22 | #include <linux/apm-emulation.h> |
23 | #include <linux/freezer.h> | ||
23 | #include <linux/device.h> | 24 | #include <linux/device.h> |
24 | #include <linux/kernel.h> | 25 | #include <linux/kernel.h> |
25 | #include <linux/list.h> | 26 | #include <linux/list.h> |
@@ -329,13 +330,8 @@ apm_ioctl(struct inode * inode, struct file *filp, u_int cmd, u_long arg) | |||
329 | /* | 330 | /* |
330 | * Wait for the suspend/resume to complete. If there | 331 | * Wait for the suspend/resume to complete. If there |
331 | * are pending acknowledges, we wait here for them. | 332 | * are pending acknowledges, we wait here for them. |
332 | * | ||
333 | * Note: we need to ensure that the PM subsystem does | ||
334 | * not kick us out of the wait when it suspends the | ||
335 | * threads. | ||
336 | */ | 333 | */ |
337 | flags = current->flags; | 334 | flags = current->flags; |
338 | current->flags |= PF_NOFREEZE; | ||
339 | 335 | ||
340 | wait_event(apm_suspend_waitqueue, | 336 | wait_event(apm_suspend_waitqueue, |
341 | as->suspend_state == SUSPEND_DONE); | 337 | as->suspend_state == SUSPEND_DONE); |
@@ -365,13 +361,8 @@ apm_ioctl(struct inode * inode, struct file *filp, u_int cmd, u_long arg) | |||
365 | /* | 361 | /* |
366 | * Wait for the suspend/resume to complete. If there | 362 | * Wait for the suspend/resume to complete. If there |
367 | * are pending acknowledges, we wait here for them. | 363 | * are pending acknowledges, we wait here for them. |
368 | * | ||
369 | * Note: we need to ensure that the PM subsystem does | ||
370 | * not kick us out of the wait when it suspends the | ||
371 | * threads. | ||
372 | */ | 364 | */ |
373 | flags = current->flags; | 365 | flags = current->flags; |
374 | current->flags |= PF_NOFREEZE; | ||
375 | 366 | ||
376 | wait_event_interruptible(apm_suspend_waitqueue, | 367 | wait_event_interruptible(apm_suspend_waitqueue, |
377 | as->suspend_state == SUSPEND_DONE); | 368 | as->suspend_state == SUSPEND_DONE); |
@@ -598,7 +589,6 @@ static int __init apm_init(void) | |||
598 | kapmd_tsk = NULL; | 589 | kapmd_tsk = NULL; |
599 | return ret; | 590 | return ret; |
600 | } | 591 | } |
601 | kapmd_tsk->flags |= PF_NOFREEZE; | ||
602 | wake_up_process(kapmd_tsk); | 592 | wake_up_process(kapmd_tsk); |
603 | 593 | ||
604 | #ifdef CONFIG_PROC_FS | 594 | #ifdef CONFIG_PROC_FS |
diff --git a/drivers/char/hvc_console.c b/drivers/char/hvc_console.c index b3ab42e0dd4a..83c1151ec7a2 100644 --- a/drivers/char/hvc_console.c +++ b/drivers/char/hvc_console.c | |||
@@ -679,6 +679,7 @@ static int khvcd(void *unused) | |||
679 | int poll_mask; | 679 | int poll_mask; |
680 | struct hvc_struct *hp; | 680 | struct hvc_struct *hp; |
681 | 681 | ||
682 | set_freezable(); | ||
682 | __set_current_state(TASK_RUNNING); | 683 | __set_current_state(TASK_RUNNING); |
683 | do { | 684 | do { |
684 | poll_mask = 0; | 685 | poll_mask = 0; |