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
