Skip to contentSkip to conversation

Add some missing endian conversions in fdt_support.c

PATCH New Gabe Black 3 participants 4 messages Nov 8, 2011 – Nov 13, 2011

lore
Share & tools
lore

Gabe Black

author
#0 lore raw

PATCH 1/1 Add some missing endian conversions in fdt_support.c

Some functions in fdt_support.c use fdt_getprop to read 32 bit values out of the device tree, but then use them directly without doing any endian conversion. Because they check for a value that doesn't actually appear in practice, the functions continued to work even though they're incorrect. This change adds the missing conversions.

---
 common/fdt_support.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
common/fdt_support.c +2 -2
index bdda64d..c501604 100644
@@ -61,7 +61,7 @@ u32 fdt_getprop_u32_default(void *fdt, const char *path, const char *prop,
 
 	val = fdt_getprop(fdt, off, prop, NULL);
 	if (val)
-		return *val;
+		return fdt32_to_cpu(*val);
 	else
 		return dflt;
 }
@@ -372,7 +372,7 @@ static int get_cells_len(void *blob, char *nr_cells_name)
 	const u32 *cell;
 
 	cell = fdt_getprop(blob, 0, nr_cells_name, NULL);
-	if (cell && *cell == 2)
+	if (cell && fdt32_to_cpu(*cell) == 2)
 		return 8;
 
 	return 4;
Signature · 1 line
1.7.3.1
#1 lore raw

PATCH 1/1 Add some missing endian conversions in fdt_support.c

+fdt maintainer

Quoted 26 lines · On Tuesday 08 November 2011 04:05:32 Gabe Black wrote:

Some functions in fdt_support.c use fdt_getprop to read 32 bit values out of the device tree, but then use them directly without doing any endian conversion. Because they check for a value that doesn't actually appear in practice, the functions continued to work even though they're incorrect. This change adds the missing conversions.

---
 common/fdt_support.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
common/fdt_support.c +1 -1
index bdda64d..c501604 100644
@@ -61,7 +61,7 @@ u32 fdt_getprop_u32_default(void *fdt, const char *path,
 const char *prop,
 
 	val = fdt_getprop(fdt, off, prop, NULL);
 	if (val)
-		return *val;
+		return fdt32_to_cpu(*val);
 	else
 		return dflt;

}

common/fdt_support.c static int get_cells_len(void *blob, char · line 378

Quoted 8 lines
common/fdt_support.c +1 -1
@@ -372,7 +372,7 @@ static int get_cells_len(void *blob, char
 *nr_cells_name) const u32 *cell;
 
 	cell = fdt_getprop(blob, 0, nr_cells_name, NULL);
-	if (cell && *cell == 2)
+	if (cell && fdt32_to_cpu(*cell) == 2)
 		return 8;
 
 	return 4;

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20111108/7dfb2ae0/attachment.pgp

author
#2 lore raw

PATCH 1/1 Add some missing endian conversions in fdt_support.c

Bump.

Quoted 40 lines · Mike Frysinger

+fdt maintainer

Quoted 3 lines · On Tuesday 08 November 2011 04:05:32 Gabe Black wrote:

Some functions in fdt_support.c use fdt_getprop to read 32 bit values out of the device tree, but then use them directly without doing any endian conversion. Because they check for a value that doesn't actually appear

in

common/fdt_support.c u32 fdt_getprop_u32_default(void *fdt, const char

Quoted 13 lines

practice, the functions continued to work even though they're incorrect. This change adds the missing conversions.

---
 common/fdt_support.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)
common/fdt_support.c +0 -0
index bdda64d..c501604 100644
@@ -61,7 +61,7 @@ u32 fdt_getprop_u32_default(void *fdt, const char

*path,

Quoted 18 lines
common/fdt_support.c +1 -1
 const char *prop,
 
      val = fdt_getprop(fdt, off, prop, NULL);
      if (val)
-             return *val;
+             return fdt32_to_cpu(*val);
      else
              return dflt;

}

common/fdt_support.c +1 -1
@@ -372,7 +372,7 @@ static int get_cells_len(void *blob, char
 *nr_cells_name) const u32 *cell;
 
      cell = fdt_getprop(blob, 0, nr_cells_name, NULL);
-     if (cell && *cell == 2)
+     if (cell && fdt32_to_cpu(*cell) == 2)
              return 8;
 
      return 4;
#3 lore raw

PATCH 1/1 Add some missing endian conversions in fdt_support.c

In reply to Gabe Black
Quoted 10 lines · Gabe Black

Some functions in fdt_support.c use fdt_getprop to read 32 bit values out of the device tree, but then use them directly without doing any endian conversion. Because they check for a value that doesn't actually appear in practice, the functions continued to work even though they're incorrect. This change adds the missing conversions.

---
  common/fdt_support.c |    4 ++--
  1 files changed, 2 insertions(+), 2 deletions(-)

Applied and requested a bugfix pull.

Thanks,
gvb