diff --git a/drivers/base/swnode.c b/drivers/base/swnode.c
index 37179a8b1ceba78fc3b3dd32a42a10aeea7131b0..74db8c971db746531638777723945c00a99025c7 100644
--- a/drivers/base/swnode.c
+++ b/drivers/base/swnode.c
@@ -938,6 +938,9 @@ int software_node_register(const struct software_node *node)
 	if (software_node_to_swnode(node))
 		return -EEXIST;
 
+	if (node->parent && !parent)
+		return -EINVAL;
+
 	return PTR_ERR_OR_ZERO(swnode_register(node, parent, 0));
 }
 EXPORT_SYMBOL_GPL(software_node_register);