summaryrefslogtreecommitdiff
path: root/.gitignore
diff options
context:
space:
mode:
authorGavin Shan <gwshan@linux.vnet.ibm.com>2016-05-03 23:22:48 +1000
committerRob Herring <robh@kernel.org>2016-05-16 07:22:34 -0500
commit50800082f17645620bfdd357ba9141c86b76363d (patch)
treed5e13e0dd6bf52d2908d090c9b4654aa7b8ecf8d /.gitignore
parentdfbd4c6eff35f1b1065cca046003cc9d7ff27222 (diff)
drivers/of: Avoid recursively calling unflatten_dt_node()
In current implementation, unflatten_dt_node() is called recursively to unflatten device nodes in FDT blob. It's stress to limited stack capacity, especially to adopt the function to unflatten device sub-tree that possibly has multiple root nodes. In that case, we runs out of stack and the system can't boot up successfully. In order to reuse the function to unflatten device sub-tree, this avoids calling the function recursively, meaning the device nodes are unflattened in one call on unflatten_dt_node(): two arrays are introduced to track the parent path size and the device node of current level of depth, which will be used by the device node on next level of depth to be unflattened. All device nodes in more than 64 level of depth are dropped and hopefully, the system can boot up successfully with the partial device-tree. Also, the parameter "poffset" and "fpsize" are unused and dropped and the parameter "dryrun" is figured out from "mem == NULL". Besides, the return value of the function is changed to indicate the size of memory consumed by the unflatten device tree or error code. Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com> Acked-by: Rob Herring <robh@kernel.org> Signed-off-by: Rob Herring <robh@kernel.org>
Diffstat (limited to '.gitignore')
0 files changed, 0 insertions, 0 deletions