- buf->len = ALIGN(max_len + PAGE_SIZE, PAGE_SIZE);
- buf->ptr = mmap(NULL, buf->len, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
- if (buf->ptr == MAP_FAILED)
+ buf->len = ALIGN(max_len + 3, PAGE_SIZE); // +3 due to the unaligned access
+ buf->start = mmap(NULL, buf->len + PAGE_SIZE, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
+ if (buf->start == MAP_FAILED)