aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/of/unittest.c
diff options
context:
space:
mode:
authorFrank Rowand <frank.rowand@sony.com>2018-10-04 23:34:33 -0400
committerFrank Rowand <frank.rowand@sony.com>2018-11-09 01:11:51 -0500
commita68238a19c3b24e43fd2327d102bcea0ccceb7d0 (patch)
treecd084e69149e0059dd1c8183009478e1e2dd4360 /drivers/of/unittest.c
parenta15e824ff2c18b2bb2464227009ae6aac4f07e10 (diff)
of: overlay: test case of two fragments adding same node
Multiple overlay fragments adding or deleting the same node is not supported. An attempt to do so results in an incorrect devicetree. The node name will be munged for the second add. After adding this patch, the unittest messages will show: Duplicate name in motor-1, renamed to "controller#1" OF: overlay: of_overlay_apply() err=0 ### dt-test ### of_overlay_fdt_apply() expected -22, ret=0, overlay_bad_add_dup_node ### dt-test ### FAIL of_unittest_overlay_high_level():2419 Adding overlay 'overlay_bad_add_dup_node' failed ... ### dt-test ### end of unittest - 210 passed, 1 failed The incorrect (munged) node name "controller#1" can be seen in the /proc filesystem: $ pwd /proc/device-tree/testcase-data-2/substation@100/motor-1 $ ls compatible controller controller#1 name phandle spin $ ls controller power_bus $ ls controller#1 power_bus_emergency Tested-by: Alan Tull <atull@kernel.org> Signed-off-by: Frank Rowand <frank.rowand@sony.com>
Diffstat (limited to 'drivers/of/unittest.c')
-rw-r--r--drivers/of/unittest.c5
1 files changed, 5 insertions, 0 deletions
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);
2161OVERLAY_INFO_EXTERN(overlay_12); 2161OVERLAY_INFO_EXTERN(overlay_12);
2162OVERLAY_INFO_EXTERN(overlay_13); 2162OVERLAY_INFO_EXTERN(overlay_13);
2163OVERLAY_INFO_EXTERN(overlay_15); 2163OVERLAY_INFO_EXTERN(overlay_15);
2164OVERLAY_INFO_EXTERN(overlay_bad_add_dup_node);
2164OVERLAY_INFO_EXTERN(overlay_bad_phandle); 2165OVERLAY_INFO_EXTERN(overlay_bad_phandle);
2165OVERLAY_INFO_EXTERN(overlay_bad_symbol); 2166OVERLAY_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