diff options
-rw-r--r-- | drivers/of/unittest-data/Makefile | 1 | ||||
-rw-r--r-- | drivers/of/unittest-data/overlay_bad_add_dup_node.dts | 28 | ||||
-rw-r--r-- | drivers/of/unittest.c | 5 |
3 files changed, 34 insertions, 0 deletions
diff --git a/drivers/of/unittest-data/Makefile b/drivers/of/unittest-data/Makefile index 013d85e694c6..166dbdbfd1c5 100644 --- a/drivers/of/unittest-data/Makefile +++ b/drivers/of/unittest-data/Makefile | |||
@@ -17,6 +17,7 @@ obj-$(CONFIG_OF_OVERLAY) += overlay.dtb.o \ | |||
17 | overlay_12.dtb.o \ | 17 | overlay_12.dtb.o \ |
18 | overlay_13.dtb.o \ | 18 | overlay_13.dtb.o \ |
19 | overlay_15.dtb.o \ | 19 | overlay_15.dtb.o \ |
20 | overlay_bad_add_dup_node.dtb.o \ | ||
20 | overlay_bad_phandle.dtb.o \ | 21 | overlay_bad_phandle.dtb.o \ |
21 | overlay_bad_symbol.dtb.o \ | 22 | overlay_bad_symbol.dtb.o \ |
22 | overlay_base.dtb.o | 23 | overlay_base.dtb.o |
diff --git a/drivers/of/unittest-data/overlay_bad_add_dup_node.dts b/drivers/of/unittest-data/overlay_bad_add_dup_node.dts new file mode 100644 index 000000000000..145dfc3b1024 --- /dev/null +++ b/drivers/of/unittest-data/overlay_bad_add_dup_node.dts | |||
@@ -0,0 +1,28 @@ | |||
1 | // SPDX-License-Identifier: GPL-2.0 | ||
2 | /dts-v1/; | ||
3 | /plugin/; | ||
4 | |||
5 | /* | ||
6 | * &electric_1/motor-1 and &spin_ctrl_1 are the same node: | ||
7 | * /testcase-data-2/substation@100/motor-1 | ||
8 | * | ||
9 | * Thus the new node "controller" in each fragment will | ||
10 | * result in an attempt to add the same node twice. | ||
11 | * This will result in an error and the overlay apply | ||
12 | * will fail. | ||
13 | */ | ||
14 | |||
15 | &electric_1 { | ||
16 | |||
17 | motor-1 { | ||
18 | controller { | ||
19 | power_bus = < 0x1 0x2 >; | ||
20 | }; | ||
21 | }; | ||
22 | }; | ||
23 | |||
24 | &spin_ctrl_1 { | ||
25 | controller { | ||
26 | power_bus_emergency = < 0x101 0x102 >; | ||
27 | }; | ||
28 | }; | ||
diff --git a/drivers/of/unittest.c b/drivers/of/unittest.c index 49ae2aa744d6..f82edf829f43 100644 --- a/drivers/of/unittest.c +++ b/drivers/of/unittest.c | |||
@@ -2161,6 +2161,7 @@ OVERLAY_INFO_EXTERN(overlay_11); | |||
2161 | OVERLAY_INFO_EXTERN(overlay_12); | 2161 | OVERLAY_INFO_EXTERN(overlay_12); |
2162 | OVERLAY_INFO_EXTERN(overlay_13); | 2162 | OVERLAY_INFO_EXTERN(overlay_13); |
2163 | OVERLAY_INFO_EXTERN(overlay_15); | 2163 | OVERLAY_INFO_EXTERN(overlay_15); |
2164 | OVERLAY_INFO_EXTERN(overlay_bad_add_dup_node); | ||
2164 | OVERLAY_INFO_EXTERN(overlay_bad_phandle); | 2165 | OVERLAY_INFO_EXTERN(overlay_bad_phandle); |
2165 | OVERLAY_INFO_EXTERN(overlay_bad_symbol); | 2166 | OVERLAY_INFO_EXTERN(overlay_bad_symbol); |
2166 | 2167 | ||
@@ -2183,6 +2184,7 @@ static struct overlay_info overlays[] = { | |||
2183 | OVERLAY_INFO(overlay_12, 0), | 2184 | OVERLAY_INFO(overlay_12, 0), |
2184 | OVERLAY_INFO(overlay_13, 0), | 2185 | OVERLAY_INFO(overlay_13, 0), |
2185 | OVERLAY_INFO(overlay_15, 0), | 2186 | OVERLAY_INFO(overlay_15, 0), |
2187 | OVERLAY_INFO(overlay_bad_add_dup_node, -EINVAL), | ||
2186 | OVERLAY_INFO(overlay_bad_phandle, -EINVAL), | 2188 | OVERLAY_INFO(overlay_bad_phandle, -EINVAL), |
2187 | OVERLAY_INFO(overlay_bad_symbol, -EINVAL), | 2189 | OVERLAY_INFO(overlay_bad_symbol, -EINVAL), |
2188 | {} | 2190 | {} |
@@ -2430,6 +2432,9 @@ static __init void of_unittest_overlay_high_level(void) | |||
2430 | unittest(overlay_data_apply("overlay", NULL), | 2432 | unittest(overlay_data_apply("overlay", NULL), |
2431 | "Adding overlay 'overlay' failed\n"); | 2433 | "Adding overlay 'overlay' failed\n"); |
2432 | 2434 | ||
2435 | unittest(overlay_data_apply("overlay_bad_add_dup_node", NULL), | ||
2436 | "Adding overlay 'overlay_bad_add_dup_node' failed\n"); | ||
2437 | |||
2433 | unittest(overlay_data_apply("overlay_bad_phandle", NULL), | 2438 | unittest(overlay_data_apply("overlay_bad_phandle", NULL), |
2434 | "Adding overlay 'overlay_bad_phandle' failed\n"); | 2439 | "Adding overlay 'overlay_bad_phandle' failed\n"); |
2435 | 2440 | ||