[PATCH] arm64: fix endianness annotation in get_kaslr_seed()

Subsystems: arm64 port (aarch64 architecture), the rest

STALE3374d

3 messages, 2 authors, 2017-06-29 · open the first message on its own page

[PATCH] arm64: fix endianness annotation in get_kaslr_seed()

From: Luc Van Oostenryck <hidden>
Date: 2017-06-28 14:58:05

In the flattened device tree format, all integer properties are
in big-endian order.
Here the property "kaslr-seed" is read from the fdt and then
correctly converted to native order (via fdt64_to_cpu()) but the
pointer used for this is not annotated as being for big-endian.

Fix this by declaring the pointer as __be64 instead of u64.

Signed-off-by: Luc Van Oostenryck <redacted>
---
 arch/arm64/kernel/kaslr.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/kernel/kaslr.c b/arch/arm64/kernel/kaslr.c
index d7e90d97f..b9f0ec99e 100644
--- a/arch/arm64/kernel/kaslr.c
+++ b/arch/arm64/kernel/kaslr.c
@@ -27,7 +27,7 @@ u16 __initdata memstart_offset_seed;
 static __init u64 get_kaslr_seed(void *fdt)
 {
 	int node, len;
-	u64 *prop;
+	__be64 *prop;
 	u64 ret;
 
 	node = fdt_path_offset(fdt, "/chosen");
-- 
2.13.0

[PATCH] arm64: fix endianness annotation in get_kaslr_seed()

From: Will Deacon <hidden>
Date: 2017-06-29 09:59:30

On Wed, Jun 28, 2017 at 04:58:05PM +0200, Luc Van Oostenryck wrote:
quoted hunk
In the flattened device tree format, all integer properties are
in big-endian order.
Here the property "kaslr-seed" is read from the fdt and then
correctly converted to native order (via fdt64_to_cpu()) but the
pointer used for this is not annotated as being for big-endian.

Fix this by declaring the pointer as __be64 instead of u64.

Signed-off-by: Luc Van Oostenryck <redacted>
---
 arch/arm64/kernel/kaslr.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/kernel/kaslr.c b/arch/arm64/kernel/kaslr.c
index d7e90d97f..b9f0ec99e 100644
--- a/arch/arm64/kernel/kaslr.c
+++ b/arch/arm64/kernel/kaslr.c
@@ -27,7 +27,7 @@ u16 __initdata memstart_offset_seed;
 static __init u64 get_kaslr_seed(void *fdt)
 {
 	int node, len;
-	u64 *prop;
+	__be64 *prop;
I think this should be fdt64_t.

Will

[PATCH v2] arm64: fix endianness annotation in get_kaslr_seed()

From: Luc Van Oostenryck <hidden>
Date: 2017-06-29 14:35:29

In the flattened device tree format, all integer properties are
in big-endian order.
Here the property "kaslr-seed" is read from the fdt and then
correctly converted to native order (via fdt64_to_cpu()) but the
pointer used for this is not annotated as being for big-endian.

Fix this by declaring the pointer as fdt64_t instead of u64
(fdt64_t being itself typedefed to __be64).

Signed-off-by: Luc Van Oostenryck <redacted>
---
Change since v1:
- use 'fdt64_t' instead of a plain '__be64'.

 arch/arm64/kernel/kaslr.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/kernel/kaslr.c b/arch/arm64/kernel/kaslr.c
index d7e90d97f..a9710efb8 100644
--- a/arch/arm64/kernel/kaslr.c
+++ b/arch/arm64/kernel/kaslr.c
@@ -27,7 +27,7 @@ u16 __initdata memstart_offset_seed;
 static __init u64 get_kaslr_seed(void *fdt)
 {
 	int node, len;
-	u64 *prop;
+	fdt64_t *prop;
 	u64 ret;
 
 	node = fdt_path_offset(fdt, "/chosen");
-- 
2.13.0
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help