diff --git a/kernel/semaphore.c b/kernel/semaphore.c
index 5e41217..5c2942e 100644
--- a/kernel/semaphore.c
+++ b/kernel/semaphore.c
@@ -54,9 +54,10 @@
 	unsigned long flags;
 
 	spin_lock_irqsave(&sem->lock, flags);
-	if (unlikely(!sem->count))
+	if (likely(sem->count > 0))
+		sem->count--;
+	else
 		__down(sem);
-	sem->count--;
 	spin_unlock_irqrestore(&sem->lock, flags);
 }
 EXPORT_SYMBOL(down);
@@ -76,10 +77,10 @@
 	int result = 0;
 
 	spin_lock_irqsave(&sem->lock, flags);
-	if (unlikely(!sem->count))
-		result = __down_interruptible(sem);
-	if (!result)
+	if (likely(sem->count > 0))
 		sem->count--;
+	else
+		result = __down_interruptible(sem);
 	spin_unlock_irqrestore(&sem->lock, flags);
 
 	return result;
@@ -102,10 +103,10 @@
 	int result = 0;
 
 	spin_lock_irqsave(&sem->lock, flags);
-	if (unlikely(!sem->count))
-		result = __down_killable(sem);
-	if (!result)
+	if (likely(sem->count > 0))
 		sem->count--;
+	else
+		result = __down_killable(sem);
 	spin_unlock_irqrestore(&sem->lock, flags);
 
 	return result;
@@ -156,10 +157,10 @@
 	int result = 0;
 
 	spin_lock_irqsave(&sem->lock, flags);
-	if (unlikely(!sem->count))
-		result = __down_timeout(sem, jiffies);
-	if (!result)
+	if (likely(sem->count > 0))
 		sem->count--;
+	else
+		result = __down_timeout(sem, jiffies);
 	spin_unlock_irqrestore(&sem->lock, flags);
 
 	return result;
@@ -178,8 +179,9 @@
 	unsigned long flags;
 
 	spin_lock_irqsave(&sem->lock, flags);
-	sem->count++;
-	if (unlikely(!list_empty(&sem->wait_list)))
+	if (likely(list_empty(&sem->wait_list)))
+		sem->count++;
+	else
 		__up(sem);
 	spin_unlock_irqrestore(&sem->lock, flags);
 }
@@ -190,6 +192,7 @@
 struct semaphore_waiter {
 	struct list_head list;
 	struct task_struct *task;
+	int up;
 };
 
 /*
@@ -202,34 +205,33 @@
 {
 	struct task_struct *task = current;
 	struct semaphore_waiter waiter;
-	int ret = 0;
 
-	waiter.task = task;
 	list_add_tail(&waiter.list, &sem->wait_list);
+	waiter.task = task;
+	waiter.up = 0;
 
 	for (;;) {
-		if (state == TASK_INTERRUPTIBLE && signal_pending(task)) {
-			ret = -EINTR;
-			break;
-		}
-		if (state == TASK_KILLABLE && fatal_signal_pending(task)) {
-			ret = -EINTR;
-			break;
-		}
-		if (timeout <= 0) {
-			ret = -ETIME;
-			break;
-		}
+		if (state == TASK_INTERRUPTIBLE && signal_pending(task))
+			goto interrupted;
+		if (state == TASK_KILLABLE && fatal_signal_pending(task))
+			goto interrupted;
+		if (timeout <= 0)
+			goto timed_out;
 		__set_task_state(task, state);
 		spin_unlock_irq(&sem->lock);
 		timeout = schedule_timeout(timeout);
 		spin_lock_irq(&sem->lock);
-		if (sem->count > 0)
-			break;
+		if (waiter.up)
+			return 0;
 	}
 
+ timed_out:
 	list_del(&waiter.list);
-	return ret;
+	return -ETIME;
+
+ interrupted:
+	list_del(&waiter.list);
+	return -EINTR;
 }
 
 static noinline void __sched __down(struct semaphore *sem)
@@ -256,5 +258,7 @@
 {
 	struct semaphore_waiter *waiter = list_first_entry(&sem->wait_list,
 						struct semaphore_waiter, list);
+	list_del(&waiter->list);
+	waiter->up = 1;
 	wake_up_process(waiter->task);
 }
