Davidlohr Bueso 220c0f
From b097d5ed33561507eeffc77120a8c16c2f0f2c4c Mon Sep 17 00:00:00 2001
Davidlohr Bueso 220c0f
From: Thomas Gleixner <tglx@linutronix.de>
Davidlohr Bueso 220c0f
Date: Thu, 22 Apr 2021 21:44:20 +0200
Davidlohr Bueso 220c0f
Subject: [PATCH 3/4] futex: Get rid of the val2 conditional dance
Davidlohr Bueso 220c0f
Git-commit: b097d5ed33561507eeffc77120a8c16c2f0f2c4c
Davidlohr Bueso 220c0f
Patch-mainline: v5.13-rc1
Davidlohr Bueso 220c0f
References: git-fixes
Davidlohr Bueso 220c0f
Davidlohr Bueso 220c0f
There is no point in checking which FUTEX operand treats the utime pointer
Davidlohr Bueso 220c0f
as 'val2' argument because that argument to do_futex() is only used by
Davidlohr Bueso 220c0f
exactly these operands.
Davidlohr Bueso 220c0f
Davidlohr Bueso 220c0f
So just handing it in unconditionally is not making any difference, but
Davidlohr Bueso 220c0f
removes a lot of pointless gunk.
Davidlohr Bueso 220c0f
Davidlohr Bueso 220c0f
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Davidlohr Bueso 220c0f
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Davidlohr Bueso 220c0f
Link: https://lore.kernel.org/r/20210422194705.125957049@linutronix.de
Davidlohr Bueso 220c0f
Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
Davidlohr Bueso 220c0f
Davidlohr Bueso 220c0f
---
Davidlohr Bueso 220c0f
 kernel/futex.c | 16 ++--------------
Davidlohr Bueso 220c0f
 1 file changed, 2 insertions(+), 14 deletions(-)
Davidlohr Bueso 220c0f
Davidlohr Bueso 220c0f
diff --git a/kernel/futex.c b/kernel/futex.c
Davidlohr Bueso 220c0f
index b0f53045f206..4ddfdce325ad 100644
Davidlohr Bueso 220c0f
--- a/kernel/futex.c
Davidlohr Bueso 220c0f
+++ b/kernel/futex.c
Davidlohr Bueso 220c0f
@@ -3764,7 +3764,6 @@ SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val,
Davidlohr Bueso 220c0f
 {
Davidlohr Bueso 220c0f
 	struct timespec64 ts;
Davidlohr Bueso 220c0f
 	ktime_t t, *tp = NULL;
Davidlohr Bueso 220c0f
-	u32 val2 = 0;
Davidlohr Bueso 220c0f
 	int cmd = op & FUTEX_CMD_MASK;
Davidlohr Bueso 220c0f
 
Davidlohr Bueso 220c0f
 	if (utime && (cmd == FUTEX_WAIT || cmd == FUTEX_LOCK_PI ||
Davidlohr Bueso 220c0f
@@ -3784,15 +3783,8 @@ SYSCALL_DEFINE6(futex, u32 __user *, uaddr, int, op, u32, val,
Davidlohr Bueso 220c0f
 			t = timens_ktime_to_host(CLOCK_MONOTONIC, t);
Davidlohr Bueso 220c0f
 		tp = &t;
Davidlohr Bueso 220c0f
 	}
Davidlohr Bueso 220c0f
-	/*
Davidlohr Bueso 220c0f
-	 * requeue parameter in 'utime' if cmd == FUTEX_*_REQUEUE_*.
Davidlohr Bueso 220c0f
-	 * number of waiters to wake in 'utime' if cmd == FUTEX_WAKE_OP.
Davidlohr Bueso 220c0f
-	 */
Davidlohr Bueso 220c0f
-	if (cmd == FUTEX_REQUEUE || cmd == FUTEX_CMP_REQUEUE ||
Davidlohr Bueso 220c0f
-	    cmd == FUTEX_CMP_REQUEUE_PI || cmd == FUTEX_WAKE_OP)
Davidlohr Bueso 220c0f
-		val2 = (u32) (unsigned long) utime;
Davidlohr Bueso 220c0f
 
Davidlohr Bueso 220c0f
-	return do_futex(uaddr, op, val, tp, uaddr2, val2, val3);
Davidlohr Bueso 220c0f
+	return do_futex(uaddr, op, val, tp, uaddr2, (unsigned long)utime, val3);
Davidlohr Bueso 220c0f
 }
Davidlohr Bueso 220c0f
 
Davidlohr Bueso 220c0f
 #ifdef CONFIG_COMPAT
Davidlohr Bueso 220c0f
@@ -3960,7 +3952,6 @@ SYSCALL_DEFINE6(futex_time32, u32 __user *, uaddr, int, op, u32, val,
Davidlohr Bueso 220c0f
 {
Davidlohr Bueso 220c0f
 	struct timespec64 ts;
Davidlohr Bueso 220c0f
 	ktime_t t, *tp = NULL;
Davidlohr Bueso 220c0f
-	int val2 = 0;
Davidlohr Bueso 220c0f
 	int cmd = op & FUTEX_CMD_MASK;
Davidlohr Bueso 220c0f
 
Davidlohr Bueso 220c0f
 	if (utime && (cmd == FUTEX_WAIT || cmd == FUTEX_LOCK_PI ||
Davidlohr Bueso 220c0f
@@ -3978,11 +3969,8 @@ SYSCALL_DEFINE6(futex_time32, u32 __user *, uaddr, int, op, u32, val,
Davidlohr Bueso 220c0f
 			t = timens_ktime_to_host(CLOCK_MONOTONIC, t);
Davidlohr Bueso 220c0f
 		tp = &t;
Davidlohr Bueso 220c0f
 	}
Davidlohr Bueso 220c0f
-	if (cmd == FUTEX_REQUEUE || cmd == FUTEX_CMP_REQUEUE ||
Davidlohr Bueso 220c0f
-	    cmd == FUTEX_CMP_REQUEUE_PI || cmd == FUTEX_WAKE_OP)
Davidlohr Bueso 220c0f
-		val2 = (int) (unsigned long) utime;
Davidlohr Bueso 220c0f
 
Davidlohr Bueso 220c0f
-	return do_futex(uaddr, op, val, tp, uaddr2, val2, val3);
Davidlohr Bueso 220c0f
+	return do_futex(uaddr, op, val, tp, uaddr2, (unsigned long)utime, val3);
Davidlohr Bueso 220c0f
 }
Davidlohr Bueso 220c0f
 #endif /* CONFIG_COMPAT_32BIT_TIME */
Davidlohr Bueso 220c0f
 
Davidlohr Bueso 220c0f
-- 
Davidlohr Bueso 220c0f
2.26.2
Davidlohr Bueso 220c0f