]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - linux/semaphore.c
Disable pristine-tar option in gbp.conf, since there is no pristine-tar branch.
[bcachefs-tools-debian] / linux / semaphore.c
index 6561dd225d458986d7eea27900f58528558dca71..b7d4b517597ad9631503b9862a1d976d3784eb93 100644 (file)
@@ -1,9 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0-only
 /*
  * Copyright (c) 2008 Intel Corporation
  * Author: Matthew Wilcox <willy@linux.intel.com>
  *
- * Distributed under the terms of the GNU GPL, version 2
- *
  * This file implements counting semaphores.
  * A counting semaphore may be acquired 'n' times before sleeping.
  * See mutex.c for single-acquisition sleeping locks which enforce
@@ -33,8 +32,6 @@
 #include <linux/spinlock.h>
 
 static noinline void __down(struct semaphore *sem);
-static noinline int __down_interruptible(struct semaphore *sem);
-static noinline int __down_killable(struct semaphore *sem);
 static noinline int __down_timeout(struct semaphore *sem, long timeout);
 static noinline void __up(struct semaphore *sem);
 
@@ -62,57 +59,6 @@ void down(struct semaphore *sem)
 }
 EXPORT_SYMBOL(down);
 
-/**
- * down_interruptible - acquire the semaphore unless interrupted
- * @sem: the semaphore to be acquired
- *
- * Attempts to acquire the semaphore.  If no more tasks are allowed to
- * acquire the semaphore, calling this function will put the task to sleep.
- * If the sleep is interrupted by a signal, this function will return -EINTR.
- * If the semaphore is successfully acquired, this function returns 0.
- */
-int down_interruptible(struct semaphore *sem)
-{
-       unsigned long flags;
-       int result = 0;
-
-       raw_spin_lock_irqsave(&sem->lock, flags);
-       if (likely(sem->count > 0))
-               sem->count--;
-       else
-               result = __down_interruptible(sem);
-       raw_spin_unlock_irqrestore(&sem->lock, flags);
-
-       return result;
-}
-EXPORT_SYMBOL(down_interruptible);
-
-/**
- * down_killable - acquire the semaphore unless killed
- * @sem: the semaphore to be acquired
- *
- * Attempts to acquire the semaphore.  If no more tasks are allowed to
- * acquire the semaphore, calling this function will put the task to sleep.
- * If the sleep is interrupted by a fatal signal, this function will return
- * -EINTR.  If the semaphore is successfully acquired, this function returns
- * 0.
- */
-int down_killable(struct semaphore *sem)
-{
-       unsigned long flags;
-       int result = 0;
-
-       raw_spin_lock_irqsave(&sem->lock, flags);
-       if (likely(sem->count > 0))
-               sem->count--;
-       else
-               result = __down_killable(sem);
-       raw_spin_unlock_irqrestore(&sem->lock, flags);
-
-       return result;
-}
-EXPORT_SYMBOL(down_killable);
-
 /**
  * down_trylock - try to acquire the semaphore, without waiting
  * @sem: the semaphore to be acquired
@@ -203,17 +149,16 @@ struct semaphore_waiter {
 static inline int __sched __down_common(struct semaphore *sem, long state,
                                                                long timeout)
 {
-       struct task_struct *task = current;
        struct semaphore_waiter waiter;
 
        list_add_tail(&waiter.list, &sem->wait_list);
-       waiter.task = task;
+       waiter.task = current;
        waiter.up = false;
 
        for (;;) {
                if (unlikely(timeout <= 0))
                        goto timed_out;
-               __set_task_state(task, state);
+               __set_current_state(state);
                raw_spin_unlock_irq(&sem->lock);
                timeout = schedule_timeout(timeout);
                raw_spin_lock_irq(&sem->lock);
@@ -223,7 +168,7 @@ static inline int __sched __down_common(struct semaphore *sem, long state,
 
  timed_out:
        list_del(&waiter.list);
-       return -1;
+       return -ETIME;
 }
 
 static noinline void __sched __down(struct semaphore *sem)
@@ -231,16 +176,6 @@ static noinline void __sched __down(struct semaphore *sem)
        __down_common(sem, TASK_UNINTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT);
 }
 
-static noinline int __sched __down_interruptible(struct semaphore *sem)
-{
-       return __down_common(sem, TASK_INTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT);
-}
-
-static noinline int __sched __down_killable(struct semaphore *sem)
-{
-       return __down_common(sem, TASK_KILLABLE, MAX_SCHEDULE_TIMEOUT);
-}
-
 static noinline int __sched __down_timeout(struct semaphore *sem, long timeout)
 {
        return __down_common(sem, TASK_UNINTERRUPTIBLE, timeout);