mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 12:42:02 +00:00
of/flattree: Fix unhandled OF_DT_NOP tag when unflattening the device tree
NOPs within the property section are skipped, but NOPs between OF_DT_END_NODE and OF_DT_BEGIN_NODE were not. My firmware NOPs out entire nodes depending on various environment parameters. of_scan_flat_dt already handles NOP more generally. Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
This commit is contained in:
parent
220bf991b0
commit
7f809e1f8e
@ -376,8 +376,11 @@ unsigned long __init unflatten_dt_node(unsigned long mem,
|
||||
if (!np->type)
|
||||
np->type = "<NULL>";
|
||||
}
|
||||
while (tag == OF_DT_BEGIN_NODE) {
|
||||
mem = unflatten_dt_node(mem, p, np, allnextpp, fpsize);
|
||||
while (tag == OF_DT_BEGIN_NODE || tag == OF_DT_NOP) {
|
||||
if (tag == OF_DT_NOP)
|
||||
*p += 4;
|
||||
else
|
||||
mem = unflatten_dt_node(mem, p, np, allnextpp, fpsize);
|
||||
tag = be32_to_cpup((__be32 *)(*p));
|
||||
}
|
||||
if (tag != OF_DT_END_NODE) {
|
||||
|
Loading…
Reference in New Issue
Block a user