[PATCH v2025.09.y 37/49] tlv: register_device() error handling

Ahmad Fatoum a.fatoum at pengutronix.de
Fri Dec 19 01:21:13 PST 2025


From: Jonas Rebmann <jre at pengutronix.de>

register_device() returns 0 on success, or an error, which must be
handled appropriately.

Signed-off-by: Jonas Rebmann <jre at pengutronix.de>
Link: https://lore.barebox.org/20251201-tlv-hardening-v1-1-5dcaa5f7aed5@pengutronix.de
Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
(cherry picked from commit debc16173615aacedd389152ce400096b6f49c5f)
Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
 common/tlv/bus.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/common/tlv/bus.c b/common/tlv/bus.c
index 4dbffd365667..7ca4f82fcf18 100644
--- a/common/tlv/bus.c
+++ b/common/tlv/bus.c
@@ -21,6 +21,7 @@ struct tlv_device *tlv_register_device(struct tlv_header *header,
 	const char *name = NULL;
 	struct device *dev;
 	static int id = 0;
+	int ret;
 
 	tlvdev = xzalloc(sizeof(*tlvdev));
 
@@ -44,7 +45,11 @@ struct tlv_device *tlv_register_device(struct tlv_header *header,
 
 	dev->device_node = of_new_node(of_new_node(NULL, NULL), dev_name(dev));
 	dev->device_node->dev = dev;
-	register_device(dev);
+	ret = register_device(dev);
+	if (ret) {
+		free(tlvdev);
+		return ERR_PTR(ret);
+	}
 
 	return tlvdev;
 }
-- 
2.47.3




More information about the barebox mailing list