Merge tag 'locking-core-2021-04-28' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 28 Apr 2021 19:37:53 +0000 (12:37 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 28 Apr 2021 19:37:53 +0000 (12:37 -0700)
Pull locking updates from Ingo Molnar:

 - rtmutex cleanup & spring cleaning pass that removes ~400 lines of
   code

 - Futex simplifications & cleanups

 - Add debugging to the CSD code, to help track down a tenacious race
   (or hw problem)

 - Add lockdep_assert_not_held(), to allow code to require a lock to not
   be held, and propagate this into the ath10k driver

 - Misc LKMM documentation updates

 - Misc KCSAN updates: cleanups & documentation updates

 - Misc fixes and cleanups

 - Fix locktorture bugs with ww_mutexes

* tag 'locking-core-2021-04-28' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (44 commits)
  kcsan: Fix printk format string
  static_call: Relax static_call_update() function argument type
  static_call: Fix unused variable warn w/o MODULE
  locking/rtmutex: Clean up signal handling in __rt_mutex_slowlock()
  locking/rtmutex: Restrict the trylock WARN_ON() to debug
  locking/rtmutex: Fix misleading comment in rt_mutex_postunlock()
  locking/rtmutex: Consolidate the fast/slowpath invocation
  locking/rtmutex: Make text section and inlining consistent
  locking/rtmutex: Move debug functions as inlines into common header
  locking/rtmutex: Decrapify __rt_mutex_init()
  locking/rtmutex: Remove pointless CONFIG_RT_MUTEXES=n stubs
  locking/rtmutex: Inline chainwalk depth check
  locking/rtmutex: Move rt_mutex_debug_task_free() to rtmutex.c
  locking/rtmutex: Remove empty and unused debug stubs
  locking/rtmutex: Consolidate rt_mutex_init()
  locking/rtmutex: Remove output from deadlock detector
  locking/rtmutex: Remove rtmutex deadlock tester leftovers
  locking/rtmutex: Remove rt_mutex_timed_lock()
  MAINTAINERS: Add myself as futex reviewer
  locking/mutex: Remove repeated declaration
  ...

1  2 
Documentation/admin-guide/kernel-parameters.txt
MAINTAINERS
arch/x86/include/asm/jump_label.h
include/linux/lockdep.h
include/linux/static_call.h
kernel/locking/lockdep.c
kernel/sched/core.c

diff --cc MAINTAINERS
Simple merge
  #include <linux/stringify.h>
  #include <linux/types.h>
  
- static __always_inline bool arch_static_branch(struct static_key *key, bool branch)
+ static __always_inline bool arch_static_branch(struct static_key * const key, const bool branch)
  {
        asm_volatile_goto("1:"
 -              ".byte " __stringify(STATIC_KEY_INIT_NOP) "\n\t"
 +              ".byte " __stringify(BYTES_NOP5) "\n\t"
                ".pushsection __jump_table,  \"aw\" \n\t"
                _ASM_ALIGN "\n\t"
                ".long 1b - ., %l[l_yes] - . \n\t"
@@@ -397,10 -404,10 +408,11 @@@ extern int lockdep_is_held(const void *
  #define lockdep_is_held_type(l, r)            (1)
  
  #define lockdep_assert_held(l)                        do { (void)(l); } while (0)
- #define lockdep_assert_held_write(l)  do { (void)(l); } while (0)
+ #define lockdep_assert_not_held(l)            do { (void)(l); } while (0)
+ #define lockdep_assert_held_write(l)          do { (void)(l); } while (0)
  #define lockdep_assert_held_read(l)           do { (void)(l); } while (0)
  #define lockdep_assert_held_once(l)           do { (void)(l); } while (0)
 +#define lockdep_assert_none_held_once()       do { } while (0)
  
  #define lockdep_recursing(tsk)                        (0)
  
@@@ -118,13 -113,11 +118,13 @@@ extern void arch_static_call_transform(
  
  #define static_call_update(name, func)                                        \
  ({                                                                    \
-       BUILD_BUG_ON(!__same_type(*(func), STATIC_CALL_TRAMP(name)));   \
+       typeof(&STATIC_CALL_TRAMP(name)) __F = (func);                  \
        __static_call_update(&STATIC_CALL_KEY(name),                    \
-                            STATIC_CALL_TRAMP_ADDR(name), func);       \
+                            STATIC_CALL_TRAMP_ADDR(name), __F);        \
  })
  
 +#define static_call_query(name) (READ_ONCE(STATIC_CALL_KEY(name).func))
 +
  #ifdef CONFIG_HAVE_STATIC_CALL_INLINE
  
  extern int __init static_call_init(void);
Simple merge
Simple merge