diff options
author | Grant Likely <grant.likely@secretlab.ca> | 2010-07-23 01:48:25 -0600 |
---|---|---|
committer | Grant Likely <grant.likely@secretlab.ca> | 2010-07-24 16:51:52 -0600 |
commit | 9a6b2e588c7809e86161236da3d29581bf5f8402 (patch) | |
tree | 0aebb8e868615a2354042a376405cd73d80ef19e /drivers/of/fdt.c | |
parent | 883c2cfc8bcc0fd00c5d9f596fb8870f481b5bda (diff) | |
download | op-kernel-dev-9a6b2e588c7809e86161236da3d29581bf5f8402.zip op-kernel-dev-9a6b2e588c7809e86161236da3d29581bf5f8402.tar.gz |
of: Fix phandle endian issues
The flat tree code wasn't fixing the endianness on phandle values when
unflattening the tree, and the code in drivers/of wasn't always doing a
be32_to_cpu before trying to dereference the phandle values. This patch
fixes them.
Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Diffstat (limited to 'drivers/of/fdt.c')
-rw-r--r-- | drivers/of/fdt.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c index dc876cb..65da5ae 100644 --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c @@ -320,13 +320,13 @@ unsigned long __init unflatten_dt_node(unsigned long mem, if ((strcmp(pname, "phandle") == 0) || (strcmp(pname, "linux,phandle") == 0)) { if (np->phandle == 0) - np->phandle = *((u32 *)*p); + np->phandle = be32_to_cpup((__be32*)*p); } /* And we process the "ibm,phandle" property * used in pSeries dynamic device tree * stuff */ if (strcmp(pname, "ibm,phandle") == 0) - np->phandle = *((u32 *)*p); + np->phandle = be32_to_cpup((__be32 *)*p); pp->name = pname; pp->length = sz; pp->value = (void *)*p; |