Messages in this thread Patch in this message | | | From | Javier Carrasco <> | Date | Wed, 22 May 2024 11:18:08 +0200 | Subject | [PATCH 2/2] hwmon: (ltc2992) use fwnode_for_each_available_child_node_scoped() |
| |
The error path from a zero value of the "shunt-resistor-micro-ohms" property does not decrement the refcount of the child node.
Instead of adding the missing fwnode_handle_put(), a safer fix for future modifications is using the _scoped version of the macro, which removes the need for fwnode_handle_put() in all error paths.
The macro defines the child node internally, which removes the need for the current child node declaration as well.
Fixes: 10b029020487 ("hwmon: (ltc2992) Avoid division by zero") Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com> --- drivers/hwmon/ltc2992.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/drivers/hwmon/ltc2992.c b/drivers/hwmon/ltc2992.c index 229aed15d5ca..3feee400ecf8 100644 --- a/drivers/hwmon/ltc2992.c +++ b/drivers/hwmon/ltc2992.c @@ -855,24 +855,19 @@ static const struct regmap_config ltc2992_regmap_config = { static int ltc2992_parse_dt(struct ltc2992_state *st) { struct fwnode_handle *fwnode; - struct fwnode_handle *child; u32 addr; u32 val; int ret; fwnode = dev_fwnode(&st->client->dev); - fwnode_for_each_available_child_node(fwnode, child) { + fwnode_for_each_available_child_node_scoped(fwnode, child) { ret = fwnode_property_read_u32(child, "reg", &addr); - if (ret < 0) { - fwnode_handle_put(child); + if (ret < 0) return ret; - } - if (addr > 1) { - fwnode_handle_put(child); + if (addr > 1) return -EINVAL; - } ret = fwnode_property_read_u32(child, "shunt-resistor-micro-ohms", &val); if (!ret) { -- 2.40.1
| |