• Linus Torvalds's avatar
    Fix incorrect user space access locking in mincore() · 2f77d107
    Linus Torvalds authored
    Doug Chapman noticed that mincore() will doa "copy_to_user()" of the
    result while holding the mmap semaphore for reading, which is a big
    no-no.  While a recursive read-lock on a semaphore in the case of a page
    fault happens to work, we don't actually allow them due to deadlock
    schenarios with writers due to fairness issues.
    
    Doug and Marcel sent in a patch to fix it, but I decided to just rewrite
    the mess instead - not just fixing the locking problem, but making the
    code smaller and (imho) much easier to understand.
    
    Cc: Doug Chapman <dchapman@redhat.com>
    Cc: Marcel Holtmann <holtmann@redhat.com>
    Cc: Hugh Dickins <hugh@veritas.com>
    Cc: Andrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    2f77d107
mincore.c 4.22 KB