• Davidlohr Bueso's avatar
    ipc/shm: Fix shmat mmap nil-page protection · c9cf9833
    Davidlohr Bueso authored
    [ Upstream commit 95e91b83 ]
    
    The issue is described here, with a nice testcase:
    
        https://bugzilla.kernel.org/show_bug.cgi?id=192931
    
    The problem is that shmat() calls do_mmap_pgoff() with MAP_FIXED, and
    the address rounded down to 0.  For the regular mmap case, the
    protection mentioned above is that the kernel gets to generate the
    address -- arch_get_unmapped_area() will always check for MAP_FIXED and
    return that address.  So by the time we do security_mmap_addr(0) things
    get funky for shmat().
    
    The testcase itself shows that while a regular user crashes, root will
    not have a problem attaching a nil-page.  There are two possible fixes
    to this.  The first, and which this patch does, is to simply allow root
    to crash as well -- this is also regular mmap behavior, ie when hacking
    up the testcase and adding mmap(...  |MAP_FIXED).  While this approach
    is the safer option, the second alternative is to ignore SHM_RND if the
    rounded a...
    c9cf9833
shm.c 33.3 KB