mbox series

[0/4] of: Automate handling of of_node_put()

Message ID 20240114165358.119916-1-jic23@kernel.org (mailing list archive)
Headers show
Series of: Automate handling of of_node_put() | expand

Message

Jonathan Cameron Jan. 14, 2024, 4:53 p.m. UTC
From: Jonathan Cameron <Jonathan.Cameron@huawei.com>

Changes since RFC: Thanks to Rob Herring for reviewing.
 - Patch description typo fixes
 - Add some info on the coccinelle script to patch 1. Primarily stating
   that we don't seem to cause false positives with this change and that
   any scripting to find cases to update like this can wait for now.
 - Note the if (_T) is left in place as general consensus from similar
   discussions on other cleanup.h use cases is that it can be helpful
   to let the compiler optimize out the call, even when the call would
   be safe with a NULL value.

Recent addition of scope based cleanup (linux/cleanup.h) allows us
to avoid a large number of places where error handlers and early
returns have to carefully deal with left over resources.
The need to call of_node_put() on breaking out of loops over child
nodes is one of these cases and this series is to address that.

A similar series has been posted for property.h equivalent case.
https://lore.kernel.org/linux-iio/20240101172611.694830-1-jic23@kernel.org/
(will be updates shortly).

If everyone is happy with this series, I'd propose an immutable branch
(either in iio.git or somewhere else) so that we can pull the first 2
patches into other trees without having to wait a whole cycle to start
making more use of this.

Jonathan Cameron (4):
  of: Add cleanup.h based auto release via __free(device_node) markings.
  of: unittest: Use __free(device_node)
  iio: adc: fsl-imx25-gcq: Use __free(device_node)
  iio: adc: rcar-gyroadc: use __free(device_node)

 drivers/iio/adc/fsl-imx25-gcq.c | 12 +++---------
 drivers/iio/adc/rcar-gyroadc.c  | 20 ++++++--------------
 drivers/of/unittest.c           | 10 +++-------
 include/linux/of.h              |  2 ++
 4 files changed, 14 insertions(+), 30 deletions(-)