Add some missing endian conversions in fdt_support.c
authorGabe Black <gabeblack@chromium.org>
Tue, 8 Nov 2011 09:05:32 +0000 (01:05 -0800)
committerGerald Van Baren <gvb@unssw.com>
Sun, 13 Nov 2011 16:21:34 +0000 (11:21 -0500)
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.

Signed-off-by: Gabe Black <gabeblack@chromium.org>
common/fdt_support.c

index bdda64d2d71887c559916dfddbcfdab660ed957e..c501604cba9bd057862dd029706cb9e96377d6e7 100644 (file)
@@ -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;