Commit 0048fbb4 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'locking-futex-2025-12-10' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull futex updates from Ingo Molnar:

 - Standardize on ktime_t in restart_block::time as well (Thomas
   Weißschuh)

 - Futex selftests:
     - Add robust list testcases (André Almeida)
     - Formatting fixes/cleanups (Carlos Llamas)

* tag 'locking-futex-2025-12-10' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  futex: Store time as ktime_t in restart block
  selftests/futex: Create test for robust list
  selftests/futex: Skip tests if shmget unsupported
  selftests/futex: Add newline to ksft_exit_fail_msg()
  selftests/futex: Remove unused test_futex_mpol()
parents 2137cb86 c42ba5a8
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ struct restart_block {
			u32 val;
			u32 flags;
			u32 bitset;
			u64 time;
			ktime_t time;
			u32 __user *uaddr2;
		} futex;
		/* For nanosleep */
+4 −5
Original line number Diff line number Diff line
@@ -738,12 +738,11 @@ int futex_wait(u32 __user *uaddr, unsigned int flags, u32 val, ktime_t *abs_time
static long futex_wait_restart(struct restart_block *restart)
{
	u32 __user *uaddr = restart->futex.uaddr;
	ktime_t t, *tp = NULL;
	ktime_t *tp = NULL;

	if (restart->futex.flags & FLAGS_HAS_TIMEOUT)
		tp = &restart->futex.time;

	if (restart->futex.flags & FLAGS_HAS_TIMEOUT) {
		t = restart->futex.time;
		tp = &t;
	}
	restart->fn = do_no_restart_syscall;

	return (long)futex_wait(uaddr, restart->futex.flags,
+1 −0
Original line number Diff line number Diff line
@@ -12,3 +12,4 @@ futex_wait_uninitialized_heap
futex_wait_wouldblock
futex_waitv
futex_numa
robust_list
+2 −1
Original line number Diff line number Diff line
@@ -22,7 +22,8 @@ TEST_GEN_PROGS := \
	futex_priv_hash \
	futex_numa_mpol \
	futex_waitv \
	futex_numa
	futex_numa \
	robust_list

TEST_PROGS := run.sh

+0 −5
Original line number Diff line number Diff line
@@ -131,11 +131,6 @@ static void test_futex(void *futex_ptr, int err_value)
	__test_futex(futex_ptr, err_value, FUTEX2_SIZE_U32 | FUTEX_PRIVATE_FLAG | FUTEX2_NUMA);
}

static void test_futex_mpol(void *futex_ptr, int err_value)
{
	__test_futex(futex_ptr, err_value, FUTEX2_SIZE_U32 | FUTEX_PRIVATE_FLAG | FUTEX2_NUMA | FUTEX2_MPOL);
}

TEST(futex_numa_mpol)
{
	struct futex32_numa *futex_numa;
Loading