lkml.org 
[lkml]   [2005]   [Jan]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: don't let mmap allocate down to zero
    On Thu, 27 Jan 2005, William Lee Irwin III wrote:

    > The only claim above is the effect of clobbering virtual page 0 and
    > referring to this phenomenon by the macro. I was rather careful not to
    > claim a specific lower boundary to the address space.

    OK, here is a patch that does compile against the current
    2.6 kernel. It it obvious we need a cutoff somewhere, so
    I've chosen one that's sure to spark up a conversation
    and I'll let others decide what that cutoff value is ;)))

    ===== mm/mmap.c 1.161 vs edited =====
    --- 1.161/mm/mmap.c Wed Jan 12 11:26:28 2005
    +++ edited/mm/mmap.c Thu Jan 27 14:19:21 2005
    @@ -1259,6 +1259,13 @@
    return addr;

    /*
    + * Make sure we don't allocate all the way down to
    + * zero, which would break NULL pointer detection.
    + */
    + if (addr < mm->brk)
    + goto fail;
    +
    + /*
    * new region fits between prev_vma->vm_end and
    * vma->vm_start, use it:
    *//*
    * Test case to determine whether the kernel can end up mapping a
    * non-zero non-MAP_FIXED mmap area at address zero, which would
    * be bad.
    */

    #include <stdio.h>
    #include <sys/time.h>
    #include <sys/mman.h>
    #include <sys/resource.h>
    #include <unistd.h>
    #include <fcntl.h>


    int main(int argc, char **argv)
    {
    int i;
    void *p;
    for(i = 0; ;i++) {

    p = mmap(0, 4096, PROT_READ | PROT_WRITE,
    MAP_PRIVATE | MAP_ANON, -1, 0);
    if (p == MAP_FAILED) {
    break;
    }
    if (p == 0) {
    printf("ACK! Got NIL after %d mappings\n", i);
    // perror("probably unhelpful: ");
    exit(1);
    }
    if ((i % 1000) == 0) printf("%d maps\n", i);
    }
    return 0;
    }
    \
     
     \ /
      Last update: 2005-03-22 14:09    [W:0.023 / U:0.476 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site