On 08.08.18 11:54, Simon Glass wrote:
> At present the sandbox RAM buffer is not aligned to any particular
> address boundary. This makes the internal pointers somewhat random with
> respect to the associated RAM buffer addresses.
> 
> Align the buffer to the page size of the machine to help with this.

Please describe in the patch description that you pad the cookie that
os_malloc writes to a page boundary. It's pretty hard to grasp that from
the current patch description :)


Alex

> 
> Signed-off-by: Simon Glass <s...@chromium.org>
> ---
> 
> Changes in v9: None
> Changes in v8: None
> Changes in v7: None
> Changes in v6: None
> Changes in v5: None
> Changes in v4: None
> Changes in v3: None
> Changes in v2: None
> 
>  arch/sandbox/cpu/os.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/sandbox/cpu/os.c b/arch/sandbox/cpu/os.c
> index 5839932b005..a1a982af2de 100644
> --- a/arch/sandbox/cpu/os.c
> +++ b/arch/sandbox/cpu/os.c
> @@ -143,14 +143,15 @@ void os_tty_raw(int fd, bool allow_sigs)
>  void *os_malloc(size_t length)
>  {
>       struct os_mem_hdr *hdr;
> +     int page_size = getpagesize();
>  
> -     hdr = mmap(NULL, length + sizeof(*hdr), PROT_READ | PROT_WRITE,
> -                MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
> +     hdr = mmap(NULL, length + page_size,
> +                PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
>       if (hdr == MAP_FAILED)
>               return NULL;
>       hdr->length = length;
>  
> -     return hdr + 1;
> +     return (void *)hdr + page_size;
>  }
>  
>  void os_free(void *ptr)
> 
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to