[PATCH] dt: factor out common code
Jan Luebbe
jlu at pengutronix.de
Wed Nov 19 05:34:08 PST 2014
Currently, dt_struct is always checked with the same code after
dt_struct_advance(). Move the check after the switch statement.
Signed-off-by: Jan Luebbe <jlu at pengutronix.de>
---
drivers/of/fdt.c | 33 +++++++++++----------------------
1 file changed, 11 insertions(+), 22 deletions(-)
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index cfe183350978..d465f9879751 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -120,18 +120,14 @@ struct device_node *of_unflatten_dtb(void *infdt)
goto err;
}
- dt_struct = dt_struct_advance(&f, dt_struct,
- sizeof(struct fdt_node_header) + len + 1);
- if (!dt_struct) {
- ret = -ESPIPE;
- goto err;
- }
-
if (!node)
node = root;
else
node = of_new_node(node, pathp);
+ dt_struct = dt_struct_advance(&f, dt_struct,
+ sizeof(struct fdt_node_header) + len + 1);
+
break;
case FDT_END_NODE:
@@ -144,10 +140,6 @@ struct device_node *of_unflatten_dtb(void *infdt)
node = node->parent;
dt_struct = dt_struct_advance(&f, dt_struct, FDT_TAGSIZE);
- if (!dt_struct) {
- ret = -ESPIPE;
- goto err;
- }
break;
@@ -162,25 +154,17 @@ struct device_node *of_unflatten_dtb(void *infdt)
goto err;
}
- dt_struct = dt_struct_advance(&f, dt_struct,
- sizeof(struct fdt_property) + len);
- if (!dt_struct) {
- ret = -ESPIPE;
- goto err;
- }
-
p = of_new_property(node, name, nodep, len);
if (!strcmp(name, "phandle") && len == 4)
node->phandle = be32_to_cpup(p->value);
+ dt_struct = dt_struct_advance(&f, dt_struct,
+ sizeof(struct fdt_property) + len);
+
break;
case FDT_NOP:
dt_struct = dt_struct_advance(&f, dt_struct, FDT_TAGSIZE);
- if (!dt_struct) {
- ret = -ESPIPE;
- goto err;
- }
break;
@@ -192,6 +176,11 @@ struct device_node *of_unflatten_dtb(void *infdt)
ret = -EINVAL;
goto err;
}
+
+ if (!dt_struct) {
+ ret = -ESPIPE;
+ goto err;
+ }
}
err:
of_delete_node(root);
--
2.1.1
More information about the barebox
mailing list