Commit eb38b952 authored by Geert Uytterhoeven's avatar Geert Uytterhoeven Committed by Rob Herring
Browse files

of: overlay: unittest: Add test for unresolved symbol



Add a test to exercise the error paths when trying to apply an overlay
with an unresolved symbol and cleaning up the resulting partial state.

Signed-off-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/580394587976975770c84411896fce9fbbcf25fa.1690533838.git.geert+renesas@glider.be


Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent ee32072f
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -33,7 +33,8 @@ obj-$(CONFIG_OF_OVERLAY) += overlay.dtbo.o \
			    overlay_gpio_03.dtbo.o \
			    overlay_gpio_04a.dtbo.o \
			    overlay_gpio_04b.dtbo.o \
			    overlay_pci_node.dtbo.o
			    overlay_pci_node.dtbo.o \
			    overlay_bad_unresolved.dtbo.o

# enable creation of __symbols__ node
DTC_FLAGS_overlay += -@
+7 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
/plugin/;

&this_label_does_not_exist {
	status = "ok";
};
+17 −0
Original line number Diff line number Diff line
@@ -3336,6 +3336,7 @@ OVERLAY_INFO_EXTERN(overlay_bad_add_dup_node);
OVERLAY_INFO_EXTERN(overlay_bad_add_dup_prop);
OVERLAY_INFO_EXTERN(overlay_bad_phandle);
OVERLAY_INFO_EXTERN(overlay_bad_symbol);
OVERLAY_INFO_EXTERN(overlay_bad_unresolved);

/* entries found by name */
static struct overlay_info overlays[] = {
@@ -3372,6 +3373,7 @@ static struct overlay_info overlays[] = {
	OVERLAY_INFO(overlay_bad_add_dup_prop, -EINVAL, -ENODEV),
	OVERLAY_INFO(overlay_bad_phandle, -EINVAL, 0),
	OVERLAY_INFO(overlay_bad_symbol, -EINVAL, -ENODEV),
	OVERLAY_INFO(overlay_bad_unresolved, -EINVAL, 0),
	/* end marker */
	{ }
};
@@ -3776,6 +3778,21 @@ static __init void of_unittest_overlay_high_level(void)
	EXPECT_END(KERN_ERR,
		   "OF: changeset: apply failed: REMOVE_PROPERTY /testcase-data-2/substation@100/hvac-medium-2:name");

	/* ---  overlay_bad_unresolved  --- */

	EXPECT_BEGIN(KERN_ERR,
		     "OF: resolver: node label 'this_label_does_not_exist' not found in live devicetree symbols table");
	EXPECT_BEGIN(KERN_ERR,
		     "OF: resolver: overlay phandle fixup failed: -22");

	unittest(overlay_data_apply("overlay_bad_unresolved", NULL),
		 "Adding overlay 'overlay_bad_unresolved' failed\n");

	EXPECT_END(KERN_ERR,
		   "OF: resolver: overlay phandle fixup failed: -22");
	EXPECT_END(KERN_ERR,
		   "OF: resolver: node label 'this_label_does_not_exist' not found in live devicetree symbols table");

	return;

err_unlock: