]> git.baikalelectronics.ru Git - kernel.git/commitdiff
Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 27 Nov 2019 00:02:40 +0000 (16:02 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 27 Nov 2019 00:02:40 +0000 (16:02 -0800)
Pull locking updates from Ingo Molnar:
 "The main changes in this cycle were:

   - A comprehensive rewrite of the robust/PI futex code's exit handling
     to fix various exit races. (Thomas Gleixner et al)

   - Rework the generic REFCOUNT_FULL implementation using
     atomic_fetch_* operations so that the performance impact of the
     cmpxchg() loops is mitigated for common refcount operations.

     With these performance improvements the generic implementation of
     refcount_t should be good enough for everybody - and this got
     confirmed by performance testing, so remove ARCH_HAS_REFCOUNT and
     REFCOUNT_FULL entirely, leaving the generic implementation enabled
     unconditionally. (Will Deacon)

   - Other misc changes, fixes, cleanups"

* 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (27 commits)
  lkdtm: Remove references to CONFIG_REFCOUNT_FULL
  locking/refcount: Remove unused 'refcount_error_report()' function
  locking/refcount: Consolidate implementations of refcount_t
  locking/refcount: Consolidate REFCOUNT_{MAX,SATURATED} definitions
  locking/refcount: Move saturation warnings out of line
  locking/refcount: Improve performance of generic REFCOUNT_FULL code
  locking/refcount: Move the bulk of the REFCOUNT_FULL implementation into the <linux/refcount.h> header
  locking/refcount: Remove unused refcount_*_checked() variants
  locking/refcount: Ensure integer operands are treated as signed
  locking/refcount: Define constants for saturation and max refcount values
  futex: Prevent exit livelock
  futex: Provide distinct return value when owner is exiting
  futex: Add mutex around futex exit
  futex: Provide state handling for exec() as well
  futex: Sanitize exit state handling
  futex: Mark the begin of futex exit explicitly
  futex: Set task::futex_state to DEAD right after handling futex exit
  futex: Split futex_mm_release() for exit/exec
  exit/exec: Seperate mm_release()
  futex: Replace PF_EXITPIDONE with a state
  ...

15 files changed:
1  2 
arch/arm64/Kconfig
arch/x86/Kconfig
arch/x86/include/asm/asm.h
drivers/gpu/drm/i915/i915_request.c
fs/kernfs/dir.c
include/linux/rcupdate.h
include/linux/sched.h
include/net/sock.h
kernel/bpf/stackmap.c
kernel/cpu.c
kernel/exit.c
kernel/fork.c
kernel/sched/core.c
mm/memcontrol.c
net/core/sock.c

Simple merge
Simple merge
Simple merge
Simple merge
diff --cc fs/kernfs/dir.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc kernel/cpu.c
Simple merge
diff --cc kernel/exit.c
Simple merge
diff --cc kernel/fork.c
Simple merge
Simple merge
diff --cc mm/memcontrol.c
Simple merge
diff --cc net/core/sock.c
index 71787f7c4f8c0027c6b0feb15018ba7ec21a369d,50b930364cb0afaaa078548d679188aeec97a950..043db3ce023e592e9f1b6602376097c28f529cfd
@@@ -518,8 -521,8 +518,8 @@@ int __sk_receive_skb(struct sock *sk, s
  
                rc = sk_backlog_rcv(sk, skb);
  
-               mutex_release(&sk->sk_lock.dep_map, 1, _RET_IP_);
+               mutex_release(&sk->sk_lock.dep_map, _RET_IP_);
 -      } else if (sk_add_backlog(sk, skb, sk->sk_rcvbuf)) {
 +      } else if (sk_add_backlog(sk, skb, READ_ONCE(sk->sk_rcvbuf))) {
                bh_unlock_sock(sk);
                atomic_inc(&sk->sk_drops);
                goto discard_and_relse;