Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Mon, 16 Oct 2017 13:03:18 +0200
From: Szabolcs Nagy <nsz@...t70.net>
To: Minqiang Chen <ptpt52@...il.com>
Cc: musl@...ts.openwall.com
Subject: Re: [PATCH v1] mman: fix mmap pass wrong offset to kernel

* Minqiang Chen <ptpt52@...il.com> [2017-10-16 09:09:32 +0800]:
> 
>     musl: fix mmap pass wrong offset to kernel
> 
> 
> 
>         for example off_t x=0x8d9eb000, the x/4096 result is 0xfff8d9eb,
> not 0x8d9eb as expecting
> 

off_t is 64bit, not 32bit, so x/4096 should not signextend.
you need to investigate this problem more.


>         this happens on arm_cortex-a15 with gcc 6.3.x
> 
> 
> 
>     Signed-off-by: Chen Minqiang <ptpt52@...il.com>
> 
> 
> *diff --git a/src/mman/mmap.c b/src/mman/mmap.c*
> 
> *index 1592403..a09c901 100644*
> 
> *--- a/src/mman/mmap.c*
> 
> *+++ b/src/mman/mmap.c*
> 
> *@@ -27,7 +27,7 @@* void *__mmap(void *start, size_t len, int prot, int
> flags, int fd, off_t off)
> 
>                 __vm_wait();
> 
>         }
> 
>  #ifdef SYS_mmap2
> 
> *-       ret = __syscall(SYS_mmap2, start, len, prot, flags, fd, off/UNIT);*
> 
> *+*       *ret = __syscall(SYS_mmap2, start, len, prot, flags, fd,
> (unsigned long)off/UNIT);*


this is wrong, off is 64bit signed int, it can have values
outside of the range of unsigned long.

(and your email client ruined the patch with random '*' and '\n')

Powered by blists - more mailing lists

Your e-mail address:

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.