summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleg Nesterov <oleg@tv-sign.ru>2008-08-05 22:01:13 +0200
committerLinus Torvalds <torvalds@linux-foundation.org>2008-08-05 23:33:47 +0200
commit5b2becc8cffdccdd60c63099f592ddd35aa6c34f (patch)
treee502280aee4d93b059a93526ba3f02a6883a596d
parentrelay: fix "full buffer with exactly full last subbuffer" accounting problem (diff)
downloadlinux-5b2becc8cffdccdd60c63099f592ddd35aa6c34f.tar.xz
linux-5b2becc8cffdccdd60c63099f592ddd35aa6c34f.zip
semaphore: __down_common: use signal_pending_state()
Change __down_common() to use signal_pending_state() instead of open coding. The changes in kernel/semaphore.o are just artifacts, the state checks are optimized away. Signed-off-by: Oleg Nesterov <oleg@tv-sign.ru> Cc: Ingo Molnar <mingo@elte.hu> Cc: Matthew Wilcox <matthew@wil.cx> Cc: Roland McGrath <roland@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--kernel/semaphore.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/kernel/semaphore.c b/kernel/semaphore.c
index aaaeae8244e7..94a62c0d4ade 100644
--- a/kernel/semaphore.c
+++ b/kernel/semaphore.c
@@ -212,9 +212,7 @@ static inline int __sched __down_common(struct semaphore *sem, long state,
waiter.up = 0;
for (;;) {
- if (state == TASK_INTERRUPTIBLE && signal_pending(task))
- goto interrupted;
- if (state == TASK_KILLABLE && fatal_signal_pending(task))
+ if (signal_pending_state(state, task))
goto interrupted;
if (timeout <= 0)
goto timed_out;