• T
    futex: Validate atomic acquisition in futex_lock_pi_atomic() · b3eaa9fc
    Thomas Gleixner 提交于
    We need to protect the atomic acquisition in the kernel against rogue
    user space which sets the user space futex to 0, so the kernel side
    acquisition succeeds while there is existing state in the kernel
    associated to the real owner.
    
    Verify whether the futex has waiters associated with kernel state.  If
    it has, return -EINVAL.  The state is corrupted already, so no point in
    cleaning it up.  Subsequent calls will fail as well.  Not our problem.
    
    [ tglx: Use futex_top_waiter() and explain why we do not need to try
      	restoring the already corrupted user space state. ]
    Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Will Drewry <wad@chromium.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    b3eaa9fc
futex.c 79.3 KB