• Linus Torvalds's avatar
    futex: move user address verification up to common code · 5cdec2d8
    Linus Torvalds authored
    When debugging the read-only hugepage case, I was confused by the fact
    that get_futex_key() did an access_ok() only for the non-shared futex
    case, since the user address checking really isn't in any way specific
    to the private key handling.
    
    Now, it turns out that the shared key handling does effectively do the
    equivalent checks inside get_user_pages_fast() (it doesn't actually
    check the address range on x86, but does check the page protections for
    being a user page).  So it wasn't actually a bug, but the fact that we
    treat the address differently for private and shared futexes threw me
    for a loop.
    
    Just move the check up, so that it gets done for both cases.  Also, use
    the 'rw' parameter for the type, even if it doesn't actually matter any
    more (it's a historical artifact of the old racy i386 "page faults from
    kernel space don't check write protections").
    
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    5cdec2d8
futex.c 71.1 KB