Index: uspace/lib/c/generic/tls.c
===================================================================
--- uspace/lib/c/generic/tls.c	(revision 3a9414e69cdbce3cfab8ca582a8a4ecc87c57ea0)
+++ uspace/lib/c/generic/tls.c	(revision 0a981e3d27256fe3be6edc65ac0c3c3f0e696ffa)
@@ -36,4 +36,5 @@
  */
 
+#include <align.h>
 #include <tls.h>
 #include <malloc.h>
@@ -148,5 +149,6 @@
 	tcb_t *tcb;
 
-	*data = malloc(sizeof(tcb_t) + size);
+	size = ALIGN_UP(size, &_tls_alignment);
+	*data = memalign((uintptr_t) &_tls_alignment, sizeof(tcb_t) + size);
 	if (*data == NULL)
 		return NULL;
@@ -167,4 +169,5 @@
 void tls_free_variant_2(tcb_t *tcb, size_t size)
 {
+	size = ALIGN_UP(size, &_tls_alignment);
 	void *start = ((void *) tcb) - size;
 	free(start);
