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: Paul Mundt <lethal@linux-sh.org> Acked-by: David Howells <dhowells@redhat.com> Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi> Acked-by: Greg Ungerer <gerg@snapgear.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
0842b245a8
Коммит
d100d148aa
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче