tree abc752f1de5e3b7f6b35e933d9343442d7d1baf0
parent 6b69b0e82d595c401a5be65ee04aa5d1d84a502e
author André Draszik <draszik@google.com> 1727968597 +0100
committer Will McVicker <willmcvicker@google.com> 1732216769 -0800

google_battery, google_bms: plug memleak: case 2.2.2: for_each_child_of_node() (v6.12 prep)

Case 2.2.2 from below bug:

    If returning or breaking early from within
    for_each_child_of_node(), a reference to the current device_node
    remains and needs to be dropped, either right away, or later if
    used past that loop to avoid a memleak.

These drivers call gbms_batt_id_node() at various times, and each time
either a new node (via for_each_child_of_node()) or the same node is
returned. If a new node is returned, it must be free'd, if the same
node is returned, it must not be free'd. Currently, new nodes returned
are never free'd, causing a memleak each time.

Since a new node must be free'd and the existing node doesn't, and
since callers don't necessarily know which type of node was returned,
the correct approach to plug this leak here is to always return a node
pointer that can safely be free'd. This can be achieved by simply
adding an extra reference to the existing node if applicable. This way,
callers can unconditionally free the returned node.

Do so, and use scoped cleanup to simplify all cleanup paths.

This commit plugs memleaks in normal code paths.

Test: TH
Bug: 370679843
Change-Id: I5317821c2299a175fb16f6458ba8ee770c31211f
Signed-off-by: André Draszik <draszik@google.com>
Signed-off-by: Will McVicker <willmcvicker@google.com>
