Commit d100d148 authored by Pekka Enberg's avatar Pekka Enberg Committed by Linus Torvalds

nommu: fix ksize() abuse

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>
Acked-by: default avatarPaul Mundt <lethal@linux-sh.org>
Acked-by: default avatarDavid Howells <dhowells@redhat.com>
Signed-off-by: default avatarPekka Enberg <penberg@cs.helsinki.fi>
Acked-by: default avatarGreg Ungerer <gerg@snapgear.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 0842b245
...@@ -390,7 +390,7 @@ static int load_elf_fdpic_binary(struct linux_binprm *bprm, ...@@ -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 */ /* 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, if (!IS_ERR_VALUE(do_mremap(current->mm->start_brk, stack_size,
fullsize, 0, 0))) fullsize, 0, 0)))
stack_size = fullsize; stack_size = fullsize;
......
...@@ -548,7 +548,7 @@ static int load_flat_file(struct linux_binprm * bprm, ...@@ -548,7 +548,7 @@ static int load_flat_file(struct linux_binprm * bprm,
PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE, 0); PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE, 0);
/* Remap to use all availabe slack region space */ /* Remap to use all availabe slack region space */
if (realdatastart && (realdatastart < (unsigned long)-4096)) { if (realdatastart && (realdatastart < (unsigned long)-4096)) {
reallen = ksize((void *)realdatastart); reallen = kobjsize((void *)realdatastart);
if (reallen > len) { if (reallen > len) {
realdatastart = do_mremap(realdatastart, len, realdatastart = do_mremap(realdatastart, len,
reallen, MREMAP_FIXED, realdatastart); reallen, MREMAP_FIXED, realdatastart);
...@@ -600,7 +600,7 @@ static int load_flat_file(struct linux_binprm * bprm, ...@@ -600,7 +600,7 @@ static int load_flat_file(struct linux_binprm * bprm,
PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE, 0); PROT_READ | PROT_EXEC | PROT_WRITE, MAP_PRIVATE, 0);
/* Remap to use all availabe slack region space */ /* Remap to use all availabe slack region space */
if (textpos && (textpos < (unsigned long) -4096)) { if (textpos && (textpos < (unsigned long) -4096)) {
reallen = ksize((void *)textpos); reallen = kobjsize((void *)textpos);
if (reallen > len) { if (reallen > len) {
textpos = do_mremap(textpos, len, reallen, textpos = do_mremap(textpos, len, reallen,
MREMAP_FIXED, textpos); MREMAP_FIXED, textpos);
...@@ -683,7 +683,7 @@ static int load_flat_file(struct linux_binprm * bprm, ...@@ -683,7 +683,7 @@ static int load_flat_file(struct linux_binprm * bprm,
*/ */
current->mm->start_brk = datapos + data_len + bss_len; current->mm->start_brk = datapos + data_len + bss_len;
current->mm->brk = (current->mm->start_brk + 3) & ~3; 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) if (flags & FLAT_FLAG_KTRACE)
...@@ -790,7 +790,7 @@ static int load_flat_file(struct linux_binprm * bprm, ...@@ -790,7 +790,7 @@ static int load_flat_file(struct linux_binprm * bprm,
/* zero the BSS, BRK and stack areas */ /* zero the BSS, BRK and stack areas */
memset((void*)(datapos + data_len), 0, bss_len + 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 */ libinfo->lib_list[id].start_brk) + /* start brk */
stack_len); stack_len);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment