Merge tag 'locking-urgent-2021-05-09' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 9 May 2021 20:07:03 +0000 (13:07 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 9 May 2021 20:07:03 +0000 (13:07 -0700)
Pull locking fixes from Thomas Gleixner:
 "A set of locking related fixes and updates:

   - Two fixes for the futex syscall related to the timeout handling.

     FUTEX_LOCK_PI does not support the FUTEX_CLOCK_REALTIME bit and
     because it's not set the time namespace adjustment for clock
     MONOTONIC is applied wrongly.

     FUTEX_WAIT cannot support the FUTEX_CLOCK_REALTIME bit because its
     always a relative timeout.

   - Cleanups in the futex syscall entry points which became obvious
     when the two timeout handling bugs were fixed.

   - Cleanup of queued_write_lock_slowpath() as suggested by Linus

   - Fixup of the smp_call_function_single_async() prototype"

* tag 'locking-urgent-2021-05-09' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  futex: Make syscall entry points less convoluted
  futex: Get rid of the val2 conditional dance
  futex: Do not apply time namespace adjustment on FUTEX_LOCK_PI
  Revert 337f13046ff0 ("futex: Allow FUTEX_CLOCK_REALTIME with FUTEX_WAIT op")
  locking/qrwlock: Cleanup queued_write_lock_slowpath()
  smp: Fix smp_call_function_single_async prototype

1  2 
include/linux/smp.h
kernel/up.c

diff --combined include/linux/smp.h
@@@ -53,16 -53,8 +53,16 @@@ int smp_call_function_single(int cpuid
  void on_each_cpu_cond_mask(smp_cond_func_t cond_func, smp_call_func_t func,
                           void *info, bool wait, const struct cpumask *mask);
  
- int smp_call_function_single_async(int cpu, call_single_data_t *csd);
+ int smp_call_function_single_async(int cpu, struct __call_single_data *csd);
  
 +/*
 + * Cpus stopping functions in panic. All have default weak definitions.
 + * Architecture-dependent code may override them.
 + */
 +void panic_smp_self_stop(void);
 +void nmi_panic_self_stop(struct pt_regs *regs);
 +void crash_smp_send_stop(void);
 +
  /*
   * Call a function on all processors
   */
diff --combined kernel/up.c
@@@ -25,7 -25,7 +25,7 @@@ int smp_call_function_single(int cpu, v
  }
  EXPORT_SYMBOL(smp_call_function_single);
  
- int smp_call_function_single_async(int cpu, call_single_data_t *csd)
+ int smp_call_function_single_async(int cpu, struct __call_single_data *csd)
  {
        unsigned long flags;
  
@@@ -38,7 -38,7 +38,7 @@@ EXPORT_SYMBOL(smp_call_function_single_
  
  /*
   * Preemption is disabled here to make sure the cond_func is called under the
 - * same condtions in UP and SMP.
 + * same conditions in UP and SMP.
   */
  void on_each_cpu_cond_mask(smp_cond_func_t cond_func, smp_call_func_t func,
                           void *info, bool wait, const struct cpumask *mask)