diff options
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/tty.h | 13 | ||||
-rw-r--r-- | include/linux/wait.h | 35 |
2 files changed, 22 insertions, 26 deletions
diff --git a/include/linux/tty.h b/include/linux/tty.h index 64f864651d86..050372979076 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h | |||
@@ -686,14 +686,13 @@ do { \ | |||
686 | prepare_to_wait(&wq, &__wait, TASK_INTERRUPTIBLE); \ | 686 | prepare_to_wait(&wq, &__wait, TASK_INTERRUPTIBLE); \ |
687 | if (condition) \ | 687 | if (condition) \ |
688 | break; \ | 688 | break; \ |
689 | if (!signal_pending(current)) { \ | 689 | if (signal_pending(current)) { \ |
690 | tty_unlock(tty); \ | 690 | ret = -ERESTARTSYS; \ |
691 | schedule(); \ | 691 | break; \ |
692 | tty_lock(tty); \ | ||
693 | continue; \ | ||
694 | } \ | 692 | } \ |
695 | ret = -ERESTARTSYS; \ | 693 | tty_unlock(tty); \ |
696 | break; \ | 694 | schedule(); \ |
695 | tty_lock(tty); \ | ||
697 | } \ | 696 | } \ |
698 | finish_wait(&wq, &__wait); \ | 697 | finish_wait(&wq, &__wait); \ |
699 | } while (0) | 698 | } while (0) |
diff --git a/include/linux/wait.h b/include/linux/wait.h index a67fc1635592..ccf0c529fd37 100644 --- a/include/linux/wait.h +++ b/include/linux/wait.h | |||
@@ -261,12 +261,11 @@ do { \ | |||
261 | prepare_to_wait(&wq, &__wait, TASK_INTERRUPTIBLE); \ | 261 | prepare_to_wait(&wq, &__wait, TASK_INTERRUPTIBLE); \ |
262 | if (condition) \ | 262 | if (condition) \ |
263 | break; \ | 263 | break; \ |
264 | if (!signal_pending(current)) { \ | 264 | if (signal_pending(current)) { \ |
265 | schedule(); \ | 265 | ret = -ERESTARTSYS; \ |
266 | continue; \ | 266 | break; \ |
267 | } \ | 267 | } \ |
268 | ret = -ERESTARTSYS; \ | 268 | schedule(); \ |
269 | break; \ | ||
270 | } \ | 269 | } \ |
271 | finish_wait(&wq, &__wait); \ | 270 | finish_wait(&wq, &__wait); \ |
272 | } while (0) | 271 | } while (0) |
@@ -302,14 +301,13 @@ do { \ | |||
302 | prepare_to_wait(&wq, &__wait, TASK_INTERRUPTIBLE); \ | 301 | prepare_to_wait(&wq, &__wait, TASK_INTERRUPTIBLE); \ |
303 | if (condition) \ | 302 | if (condition) \ |
304 | break; \ | 303 | break; \ |
305 | if (!signal_pending(current)) { \ | 304 | if (signal_pending(current)) { \ |
306 | ret = schedule_timeout(ret); \ | 305 | ret = -ERESTARTSYS; \ |
307 | if (!ret) \ | 306 | break; \ |
308 | break; \ | ||
309 | continue; \ | ||
310 | } \ | 307 | } \ |
311 | ret = -ERESTARTSYS; \ | 308 | ret = schedule_timeout(ret); \ |
312 | break; \ | 309 | if (!ret) \ |
310 | break; \ | ||
313 | } \ | 311 | } \ |
314 | if (!ret && (condition)) \ | 312 | if (!ret && (condition)) \ |
315 | ret = 1; \ | 313 | ret = 1; \ |
@@ -439,14 +437,13 @@ do { \ | |||
439 | finish_wait(&wq, &__wait); \ | 437 | finish_wait(&wq, &__wait); \ |
440 | break; \ | 438 | break; \ |
441 | } \ | 439 | } \ |
442 | if (!signal_pending(current)) { \ | 440 | if (signal_pending(current)) { \ |
443 | schedule(); \ | 441 | ret = -ERESTARTSYS; \ |
444 | continue; \ | 442 | abort_exclusive_wait(&wq, &__wait, \ |
445 | } \ | ||
446 | ret = -ERESTARTSYS; \ | ||
447 | abort_exclusive_wait(&wq, &__wait, \ | ||
448 | TASK_INTERRUPTIBLE, NULL); \ | 443 | TASK_INTERRUPTIBLE, NULL); \ |
449 | break; \ | 444 | break; \ |
445 | } \ | ||
446 | schedule(); \ | ||
450 | } \ | 447 | } \ |
451 | } while (0) | 448 | } while (0) |
452 | 449 | ||