diff mbox series

i2c: mpc: Removal of of_node_put with __free for auto cleanup

Message ID 20240415161220.8347-1-jain.abhinav177@gmail.com
State New
Headers show
Series i2c: mpc: Removal of of_node_put with __free for auto cleanup | expand

Commit Message

Abhinav Jain April 15, 2024, 4:12 p.m. UTC
Remove of_node_put from node_ctrl and node struct device_nodes.
Move the declaration to initialization for ensuring scope sanity.

Suggested-by: Julia Lawall <julia.lawall@inria.fr>
Signed-off-by: Abhinav Jain <jain.abhinav177@gmail.com>
---
 drivers/i2c/busses/i2c-mpc.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

Comments

Chris Packham April 16, 2024, 4 a.m. UTC | #1
On 16/04/24 04:12, Abhinav Jain wrote:
> Remove of_node_put from node_ctrl and node struct device_nodes.
> Move the declaration to initialization for ensuring scope sanity.
>
> Suggested-by: Julia Lawall <julia.lawall@inria.fr>
> Signed-off-by: Abhinav Jain <jain.abhinav177@gmail.com>

Reviewed-by: Chris Packham <chris.packham@alliedtelesis.co.nz>

> ---
>   drivers/i2c/busses/i2c-mpc.c | 11 ++++-------
>   1 file changed, 4 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c
> index 8d73c0f405ed..c4223556b3b8 100644
> --- a/drivers/i2c/busses/i2c-mpc.c
> +++ b/drivers/i2c/busses/i2c-mpc.c
> @@ -304,13 +304,12 @@ static void mpc_i2c_setup_512x(struct device_node *node,
>   					 struct mpc_i2c *i2c,
>   					 u32 clock)
>   {
> -	struct device_node *node_ctrl;
>   	void __iomem *ctrl;
>   	u32 idx;
>   
>   	/* Enable I2C interrupts for mpc5121 */
> -	node_ctrl = of_find_compatible_node(NULL, NULL,
> -					    "fsl,mpc5121-i2c-ctrl");
> +	struct device_node *node_ctrl __free(device_node) =
> +		of_find_compatible_node(NULL, NULL, "fsl,mpc5121-i2c-ctrl");
>   	if (node_ctrl) {
>   		ctrl = of_iomap(node_ctrl, 0);
>   		if (ctrl) {
> @@ -321,7 +320,6 @@ static void mpc_i2c_setup_512x(struct device_node *node,
>   			setbits32(ctrl, 1 << (24 + idx * 2));
>   			iounmap(ctrl);
>   		}
> -		of_node_put(node_ctrl);
>   	}
>   
>   	/* The clock setup for the 52xx works also fine for the 512x */
> @@ -358,11 +356,11 @@ static const struct mpc_i2c_divider mpc_i2c_dividers_8xxx[] = {
>   
>   static u32 mpc_i2c_get_sec_cfg_8xxx(void)
>   {
> -	struct device_node *node;
>   	u32 __iomem *reg;
>   	u32 val = 0;
>   
> -	node = of_find_node_by_name(NULL, "global-utilities");
> +	struct device_node *node __free(device_node) =
> +		of_find_node_by_name(NULL, "global-utilities");
>   	if (node) {
>   		const u32 *prop = of_get_property(node, "reg", NULL);
>   		if (prop) {
> @@ -383,7 +381,6 @@ static u32 mpc_i2c_get_sec_cfg_8xxx(void)
>   			iounmap(reg);
>   		}
>   	}
> -	of_node_put(node);
>   
>   	return val;
>   }
Andi Shyti April 16, 2024, 2:07 p.m. UTC | #2
Hi Chris,

On Tue, Apr 16, 2024 at 03:59:13AM +0000, Chris Packham wrote:
> On 16/04/24 08:54, Andi Shyti wrote:
> >>   	/* Enable I2C interrupts for mpc5121 */
> >> -	node_ctrl = of_find_compatible_node(NULL, NULL,
> >> -					    "fsl,mpc5121-i2c-ctrl");
> >> +	struct device_node *node_ctrl __free(device_node) =
> > How have you tested this?
> 
> I'm not sure I know anyone that still has a mpc5121. Maybe someone on 
> linuxppc-dev?

that's why I was asking, this would be the first driver in i2c
using Rob's __free(device_node).

> I did try to take the patch for a spin on my T2081RDB but I'm having 
> some userland issues on it for some reason (unrelated to this change). 
> The kernel boot does discover a few peripherals hanging of the I2C 
> interface but I'm not in a position to offer up a Tested-by and I've run 
> out of time to debug why my board is unhappy.

Thanks for giving it a try.

Andi
Andi Shyti April 16, 2024, 10:46 p.m. UTC | #3
Hi

On Mon, 15 Apr 2024 16:12:20 +0000, Abhinav Jain wrote:
> Remove of_node_put from node_ctrl and node struct device_nodes.
> Move the declaration to initialization for ensuring scope sanity.
> 
> 

Applied to i2c/i2c-host on

git://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux.git

Thank you,
Andi

Patches applied
===============
[1/1] i2c: mpc: Removal of of_node_put with __free for auto cleanup
      commit: 24e4a0d7c6b7a6491cc44781f3900129f56f447f
Michael Ellerman April 19, 2024, 7:22 a.m. UTC | #4
Chris Packham <Chris.Packham@alliedtelesis.co.nz> writes:
> On 16/04/24 08:54, Andi Shyti wrote:
>> Hi Abhinav,
>>
>>>   	/* Enable I2C interrupts for mpc5121 */
>>> -	node_ctrl = of_find_compatible_node(NULL, NULL,
>>> -					    "fsl,mpc5121-i2c-ctrl");
>>> +	struct device_node *node_ctrl __free(device_node) =
>> How have you tested this?
>
> I'm not sure I know anyone that still has a mpc5121. Maybe someone on 
> linuxppc-dev?

Not that I know of.

The driver loads on my T4240, but doesn't hit the right paths to test
this patch.

No objection to it being merged though.

cheers
diff mbox series

Patch

diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c
index 8d73c0f405ed..c4223556b3b8 100644
--- a/drivers/i2c/busses/i2c-mpc.c
+++ b/drivers/i2c/busses/i2c-mpc.c
@@ -304,13 +304,12 @@  static void mpc_i2c_setup_512x(struct device_node *node,
 					 struct mpc_i2c *i2c,
 					 u32 clock)
 {
-	struct device_node *node_ctrl;
 	void __iomem *ctrl;
 	u32 idx;
 
 	/* Enable I2C interrupts for mpc5121 */
-	node_ctrl = of_find_compatible_node(NULL, NULL,
-					    "fsl,mpc5121-i2c-ctrl");
+	struct device_node *node_ctrl __free(device_node) =
+		of_find_compatible_node(NULL, NULL, "fsl,mpc5121-i2c-ctrl");
 	if (node_ctrl) {
 		ctrl = of_iomap(node_ctrl, 0);
 		if (ctrl) {
@@ -321,7 +320,6 @@  static void mpc_i2c_setup_512x(struct device_node *node,
 			setbits32(ctrl, 1 << (24 + idx * 2));
 			iounmap(ctrl);
 		}
-		of_node_put(node_ctrl);
 	}
 
 	/* The clock setup for the 52xx works also fine for the 512x */
@@ -358,11 +356,11 @@  static const struct mpc_i2c_divider mpc_i2c_dividers_8xxx[] = {
 
 static u32 mpc_i2c_get_sec_cfg_8xxx(void)
 {
-	struct device_node *node;
 	u32 __iomem *reg;
 	u32 val = 0;
 
-	node = of_find_node_by_name(NULL, "global-utilities");
+	struct device_node *node __free(device_node) =
+		of_find_node_by_name(NULL, "global-utilities");
 	if (node) {
 		const u32 *prop = of_get_property(node, "reg", NULL);
 		if (prop) {
@@ -383,7 +381,6 @@  static u32 mpc_i2c_get_sec_cfg_8xxx(void)
 			iounmap(reg);
 		}
 	}
-	of_node_put(node);
 
 	return val;
 }