We use clone and eclone directly and not through glibc, therefore must explicitly care about thread-safety of malloc. This patch eliminates the use of malloc() in genstack_alloc(). Use mmap() instead. While an overkill, I don't expect performance issues of this. Signed-off-by: Oren Laadan <orenl@xxxxxxxxxxxxxxx> --- genstack.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/genstack.c b/genstack.c index c552d04..c97e0c0 100644 --- a/genstack.c +++ b/genstack.c @@ -34,7 +34,11 @@ struct genstack *genstack_alloc(size_t sz) if (sz == 0) return NULL; - stk = malloc(sizeof(*stk)); + /* + * This is clearly an overkill; however, we must not use + * malloc because it may not be thread-safe! + */ + stk = mmap(NULL, page_size(), mmap_prot, mmap_flags, -1, 0); if (!stk) return NULL; @@ -61,7 +65,7 @@ struct genstack *genstack_alloc(size_t sz) void genstack_release(struct genstack *stk) { munmap(stk->addr, stk->size); - free(stk); + munmap(stk, page_size()); } /* Return the size of the usable stack region. Suitable for providing -- 1.7.0.4 _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers