diff options
Diffstat (limited to 'futex-Consolidate-duplicated-timer-setup-code.patch')
-rw-r--r-- | futex-Consolidate-duplicated-timer-setup-code.patch | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/futex-Consolidate-duplicated-timer-setup-code.patch b/futex-Consolidate-duplicated-timer-setup-code.patch deleted file mode 100644 index 473699fdd17b..000000000000 --- a/futex-Consolidate-duplicated-timer-setup-code.patch +++ /dev/null @@ -1,143 +0,0 @@ -From 5ca584d935c32906d114924dc0e1dbfcbb13fdb2 Mon Sep 17 00:00:00 2001 -From: Waiman Long <longman@redhat.com> -Date: Tue, 28 May 2019 12:03:45 -0400 -Subject: [PATCH] futex: Consolidate duplicated timer setup code - -Add a new futex_setup_timer() helper function to consolidate all the -hrtimer_sleeper setup code. - -Signed-off-by: Waiman Long <longman@redhat.com> -Signed-off-by: Thomas Gleixner <tglx@linutronix.de> -Cc: Peter Zijlstra <peterz@infradead.org> -Cc: Darren Hart <dvhart@infradead.org> -Cc: Davidlohr Bueso <dave@stgolabs.net> -Link: https://lkml.kernel.org/r/20190528160345.24017-1-longman@redhat.com ---- - kernel/futex.c | 69 ++++++++++++++++++++++++++++---------------------- - 1 file changed, 39 insertions(+), 30 deletions(-) - -diff --git a/kernel/futex.c b/kernel/futex.c -index 2268b97d5439..49bf20a8c512 100644 ---- a/kernel/futex.c -+++ b/kernel/futex.c -@@ -483,6 +483,37 @@ enum futex_access { - FUTEX_WRITE - }; - -+/** -+ * futex_setup_timer - set up the sleeping hrtimer. -+ * @time: ptr to the given timeout value -+ * @timeout: the hrtimer_sleeper structure to be set up -+ * @flags: futex flags -+ * @range_ns: optional range in ns -+ * -+ * Return: Initialized hrtimer_sleeper structure or NULL if no timeout -+ * value given -+ */ -+static inline struct hrtimer_sleeper * -+futex_setup_timer(ktime_t *time, struct hrtimer_sleeper *timeout, -+ int flags, u64 range_ns) -+{ -+ if (!time) -+ return NULL; -+ -+ hrtimer_init_on_stack(&timeout->timer, (flags & FLAGS_CLOCKRT) ? -+ CLOCK_REALTIME : CLOCK_MONOTONIC, -+ HRTIMER_MODE_ABS); -+ hrtimer_init_sleeper(timeout, current); -+ -+ /* -+ * If range_ns is 0, calling hrtimer_set_expires_range_ns() is -+ * effectively the same as calling hrtimer_set_expires(). -+ */ -+ hrtimer_set_expires_range_ns(&timeout->timer, *time, range_ns); -+ -+ return timeout; -+} -+ - /** - * get_futex_key() - Get parameters which are the keys for a futex - * @uaddr: virtual address of the futex -@@ -2692,7 +2723,7 @@ static int futex_wait_setup(u32 __user *uaddr, u32 val, unsigned int flags, - static int futex_wait(u32 __user *uaddr, unsigned int flags, u32 val, - ktime_t *abs_time, u32 bitset) - { -- struct hrtimer_sleeper timeout, *to = NULL; -+ struct hrtimer_sleeper timeout, *to; - struct restart_block *restart; - struct futex_hash_bucket *hb; - struct futex_q q = futex_q_init; -@@ -2702,17 +2733,8 @@ static int futex_wait(u32 __user *uaddr, unsigned int flags, u32 val, - return -EINVAL; - q.bitset = bitset; - -- if (abs_time) { -- to = &timeout; -- -- hrtimer_init_on_stack(&to->timer, (flags & FLAGS_CLOCKRT) ? -- CLOCK_REALTIME : CLOCK_MONOTONIC, -- HRTIMER_MODE_ABS); -- hrtimer_init_sleeper(to, current); -- hrtimer_set_expires_range_ns(&to->timer, *abs_time, -- current->timer_slack_ns); -- } -- -+ to = futex_setup_timer(abs_time, &timeout, flags, -+ current->timer_slack_ns); - retry: - /* - * Prepare to wait on uaddr. On success, holds hb lock and increments -@@ -2792,7 +2814,7 @@ static long futex_wait_restart(struct restart_block *restart) - static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, - ktime_t *time, int trylock) - { -- struct hrtimer_sleeper timeout, *to = NULL; -+ struct hrtimer_sleeper timeout, *to; - struct futex_pi_state *pi_state = NULL; - struct rt_mutex_waiter rt_waiter; - struct futex_hash_bucket *hb; -@@ -2805,13 +2827,7 @@ static int futex_lock_pi(u32 __user *uaddr, unsigned int flags, - if (refill_pi_state_cache()) - return -ENOMEM; - -- if (time) { -- to = &timeout; -- hrtimer_init_on_stack(&to->timer, CLOCK_REALTIME, -- HRTIMER_MODE_ABS); -- hrtimer_init_sleeper(to, current); -- hrtimer_set_expires(&to->timer, *time); -- } -+ to = futex_setup_timer(time, &timeout, FLAGS_CLOCKRT, 0); - - retry: - ret = get_futex_key(uaddr, flags & FLAGS_SHARED, &q.key, FUTEX_WRITE); -@@ -3208,7 +3224,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, - u32 val, ktime_t *abs_time, u32 bitset, - u32 __user *uaddr2) - { -- struct hrtimer_sleeper timeout, *to = NULL; -+ struct hrtimer_sleeper timeout, *to; - struct futex_pi_state *pi_state = NULL; - struct rt_mutex_waiter rt_waiter; - struct futex_hash_bucket *hb; -@@ -3225,15 +3241,8 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, - if (!bitset) - return -EINVAL; - -- if (abs_time) { -- to = &timeout; -- hrtimer_init_on_stack(&to->timer, (flags & FLAGS_CLOCKRT) ? -- CLOCK_REALTIME : CLOCK_MONOTONIC, -- HRTIMER_MODE_ABS); -- hrtimer_init_sleeper(to, current); -- hrtimer_set_expires_range_ns(&to->timer, *abs_time, -- current->timer_slack_ns); -- } -+ to = futex_setup_timer(abs_time, &timeout, flags, -+ current->timer_slack_ns); - - /* - * The waiter is allocated on our stack, manipulated by the requeue --- -2.22.0 - |