of_new_node(of_new_node(NULL, NULL), ...) leaks memory of the parent node which is never freed. Fix this by allocating a reusable parent node in tlv_bus_register().
Signed-off-by: Sascha Hauer <[email protected]> --- common/tlv/bus.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/common/tlv/bus.c b/common/tlv/bus.c index 4dbffd365667b258991e5ab01a99be4ee225fee2..a59f8d297a27975a43dd98230e04593150bf250d 100644 --- a/common/tlv/bus.c +++ b/common/tlv/bus.c @@ -14,6 +14,8 @@ static void tlv_devinfo(struct device *dev) printf("Magic: %08x\n", tlvdev->magic); } +static struct device_node *tlv_parent_node; + struct tlv_device *tlv_register_device(struct tlv_header *header, struct device *parent) { @@ -42,7 +44,7 @@ struct tlv_device *tlv_register_device(struct tlv_header *header, if (!name) dev_set_name(dev, "tlv%u", id++); - dev->device_node = of_new_node(of_new_node(NULL, NULL), dev_name(dev)); + dev->device_node = of_new_node(tlv_parent_node, dev_name(dev)); dev->device_node->dev = dev; register_device(dev); @@ -123,6 +125,8 @@ static int tlv_bus_register(void) { int ret; + tlv_parent_node = of_new_node(NULL, NULL); + ret = bus_register(&tlv_bus); if (ret) return ret; -- 2.47.3
