summaryrefslogtreecommitdiffstats
path: root/meta/recipes-kernel/lttng/babeltrace/Fix-Align-buffers-from-objstack_alloc-on-sizeof-void.patch
blob: 8e81d2d78156cfa6821bc85422219c330017a244 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
From cae67efbd9ddf2cee6bbefec076dc8933ababc43 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fredrik=20Markstr=C3=B6m?= <fredrik.markstrom@gmail.com>
Date: Fri, 16 May 2014 10:10:38 +0800
Subject: [PATCH] Fix: Align buffers from objstack_alloc on sizeof(void *)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Upstream-Status: Backport

The buffers from objstack_alloc will store pointers, so they must
be aligned on a pointer's size, or else it will cause issues on the
CPUs which do not support unaligned addresses access.

Signed-off-by: Fredrik Markstrom <fredrik.markstrom@gmail.com>
Signed-off-by: Roy Li <rongqing.li@windriver.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
---
 formats/ctf/metadata/objstack.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/formats/ctf/metadata/objstack.c b/formats/ctf/metadata/objstack.c
index 9e264a4..14d9252 100644
--- a/formats/ctf/metadata/objstack.c
+++ b/formats/ctf/metadata/objstack.c
@@ -27,6 +27,7 @@
 #include <stdlib.h>
 #include <babeltrace/list.h>
 #include <babeltrace/babeltrace-internal.h>
+#include <babeltrace/align.h>
 
 #define OBJSTACK_INIT_LEN		128
 #define OBJSTACK_POISON			0xcc
@@ -39,7 +40,7 @@ struct objstack_node {
 	struct bt_list_head node;
 	size_t len;
 	size_t used_len;
-	char data[];
+	char __attribute__ ((aligned (sizeof(void *)))) data[];
 };
 
 BT_HIDDEN
@@ -118,6 +119,8 @@ void *objstack_alloc(struct objstack *objstack, size_t len)
 	struct objstack_node *last_node;
 	void *p;
 
+	len = ALIGN(len, sizeof(void *));
+
 	/* Get last node */
 	last_node = bt_list_entry(objstack->head.prev,
 			struct objstack_node, node);
-- 
1.7.10.4