From: Jonas Rebmann <[email protected]>

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

Signed-off-by: Jonas Rebmann <[email protected]>
Link: 
https://lore.barebox.org/[email protected]
Signed-off-by: Sascha Hauer <[email protected]>
(cherry picked from commit debc16173615aacedd389152ce400096b6f49c5f)
Signed-off-by: Ahmad Fatoum <[email protected]>
---
 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


Reply via email to