lkml.org 
[lkml]   [2008]   [May]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[RFC/PATCH] nommu: fix ksize() abuse
    From: Pekka Enberg <penberg@cs.helsinki.fi>

    The nommu binfmt code uses ksize() for pointers returned from do_mmap()
    which is wrong. This converts the call-sites to use the nommu specific
    kobjsize() function which works as expected.

    Cc: Christoph Lameter <clameter@sgi.com>
    Cc: Matt Mackall <mpm@selenic.com>
    Cc: Paul Mundt <lethal@linux-sh.org>
    Cc: David Howells <dhowells@redhat.com>
    Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
    ---
    fs/binfmt_elf_fdpic.c | 2 +-
    fs/binfmt_flat.c | 8 ++++----
    2 files changed, 5 insertions(+), 5 deletions(-)

    diff --git a/fs/binfmt_elf_fdpic.c b/fs/binfmt_elf_fdpic.c
    index ddd35d8..d051a32 100644
    --- a/fs/binfmt_elf_fdpic.c
    +++ b/fs/binfmt_elf_fdpic.c
    @@ -390,7 +390,7 @@ static int load_elf_fdpic_binary(struct linux_binprm *bprm,
    }

    /* expand the stack mapping to use up the entire allocation granule */
    - fullsize = ksize((char *) current->mm->start_brk);
    + fullsize = kobjsize((char *) current->mm->start_brk);
    if (!IS_ERR_VALUE(do_mremap(current->mm->start_brk, stack_size,
    fullsize, 0, 0)))
    stack_size = fullsize;
    diff --git a/fs/binfmt_flat.c b/fs/binfmt_flat.c
    index 3b40d45..2cb1acd 100644
    --- a/fs/binfmt_flat.c
    +++ b/fs/binfmt_flat.c
    @@ -548,7 +548,7 @@ static int load_flat_file(struct linux_binprm * bprm,
    PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE, 0);
    /* Remap to use all availabe slack region space */
    if (realdatastart && (realdatastart < (unsigned long)-4096)) {
    - reallen = ksize((void *)realdatastart);
    + reallen = kobjsize((void *)realdatastart);
    if (reallen > len) {
    realdatastart = do_mremap(realdatastart, len,
    reallen, MREMAP_FIXED, realdatastart);
    @@ -600,7 +600,7 @@ static int load_flat_file(struct linux_binprm * bprm,
    PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE, 0);
    /* Remap to use all availabe slack region space */
    if (textpos && (textpos < (unsigned long) -4096)) {
    - reallen = ksize((void *)textpos);
    + reallen = kobjsize((void *)textpos);
    if (reallen > len) {
    textpos = do_mremap(textpos, len, reallen,
    MREMAP_FIXED, textpos);
    @@ -683,7 +683,7 @@ static int load_flat_file(struct linux_binprm * bprm,
    */
    current->mm->start_brk = datapos + data_len + bss_len;
    current->mm->brk = (current->mm->start_brk + 3) & ~3;
    - current->mm->context.end_brk = memp + ksize((void *) memp) - stack_len;
    + current->mm->context.end_brk = memp + kobjsize((void *) memp) - stack_len;
    }

    if (flags & FLAT_FLAG_KTRACE)
    @@ -790,7 +790,7 @@ static int load_flat_file(struct linux_binprm * bprm,

    /* zero the BSS, BRK and stack areas */
    memset((void*)(datapos + data_len), 0, bss_len +
    - (memp + ksize((void *) memp) - stack_len - /* end brk */
    + (memp + kobjsize((void *) memp) - stack_len - /* end brk */
    libinfo->lib_list[id].start_brk) + /* start brk */
    stack_len);

    --
    1.5.2.5


    \
     
     \ /
      Last update: 2008-05-22 18:13    [W:0.022 / U:29.480 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site