Linux-Tegra Archive mirror
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@linaro.org>
To: "Peng Fan (OSS)" <peng.fan@oss.nxp.com>
Cc: Linus Walleij <linus.walleij@linaro.org>,
	Thierry Reding <thierry.reding@gmail.com>,
	Jonathan Hunter <jonathanh@nvidia.com>,
	Dvorkin Dmitry <dvorkin@tibbo.com>,
	Wells Lu <wellslutw@gmail.com>,
	Maxime Coquelin <mcoquelin.stm32@gmail.com>,
	Alexandre Torgue <alexandre.torgue@foss.st.com>,
	Emil Renner Berthing <kernel@esmil.dk>,
	Jianlong Huang <jianlong.huang@starfivetech.com>,
	Hal Feng <hal.feng@starfivetech.com>,
	Orson Zhai <orsonzhai@gmail.com>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	Chunyan Zhang <zhang.lyra@gmail.com>,
	Viresh Kumar <vireshk@kernel.org>,
	Shiraz Hashim <shiraz.linux.kernel@gmail.com>,
	soc@kernel.org, Krzysztof Kozlowski <krzk@kernel.org>,
	Sylwester Nawrocki <s.nawrocki@samsung.com>,
	Alim Akhtar <alim.akhtar@samsung.com>,
	Geert Uytterhoeven <geert+renesas@glider.be>,
	Patrice Chotard <patrice.chotard@foss.st.com>,
	Heiko Stuebner <heiko@sntech.de>,
	Damien Le Moal <dlemoal@kernel.org>,
	Ludovic Desroches <ludovic.desroches@microchip.com>,
	Nicolas Ferre <nicolas.ferre@microchip.com>,
	Alexandre Belloni <alexandre.belloni@bootlin.com>,
	Claudiu Beznea <claudiu.beznea@tuxon.dev>,
	Dong Aisheng <aisheng.dong@nxp.com>,
	Fabio Estevam <festevam@gmail.com>,
	Shawn Guo <shawnguo@kernel.org>, Jacky Bai <ping.bai@nxp.com>,
	Pengutronix Kernel Team <kernel@pengutronix.de>,
	Chester Lin <chester62515@gmail.com>,
	Matthias Brugger <mbrugger@suse.com>,
	Ghennadi Procopciuc <ghennadi.procopciuc@oss.nxp.com>,
	Sean Wang <sean.wang@kernel.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	AngeloGioacchino Del Regno
	<angelogioacchino.delregno@collabora.com>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Andrew Jeffery <andrew@codeconstruct.com.au>,
	Joel Stanley <joel@jms.id.au>,
	linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-tegra@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-stm32@st-md-mailman.stormreply.com,
	linux-samsung-soc@vger.kernel.org,
	linux-renesas-soc@vger.kernel.org,
	linux-rockchip@lists.infradead.org,
	linux-riscv@lists.infradead.org,
	linux-mediatek@lists.infradead.org, imx@lists.linux.dev,
	linux-aspeed@lists.ozlabs.org, openbmc@lists.ozlabs.org,
	Peng Fan <peng.fan@nxp.com>
Subject: Re: [PATCH 01/21] pinctrl: ti: iodelay: Use scope based of_node_put() cleanups
Date: Wed, 1 May 2024 16:32:40 +0300	[thread overview]
Message-ID: <ee5c8637-b8b2-491b-b011-e399942691dc@moroto.mountain> (raw)
In-Reply-To: <20240501-pinctrl-cleanup-v1-1-797ceca46e5c@nxp.com>

On Wed, May 01, 2024 at 08:55:59PM +0800, Peng Fan (OSS) wrote:
> @@ -879,16 +874,12 @@ static int ti_iodelay_probe(struct platform_device *pdev)
>  	ret = pinctrl_register_and_init(&iod->desc, dev, iod, &iod->pctl);
>  	if (ret) {
>  		dev_err(dev, "Failed to register pinctrl\n");
> -		goto exit_out;
> +		return ret;
>  	}
>  
>  	platform_set_drvdata(pdev, iod);
>  
>  	return pinctrl_enable(iod->pctl);
> -
> -exit_out:
> -	of_node_put(np);
> -	return ret;
>  }

This will call of_node_put() on the success path so it's a behavior
change.  The original code is buggy, it's supposed to call of_node_put()
on the success path here or in ti_iodelay_remove().

If it's supposed to call of_node_put() here, then fine, this is bugfix
but if it's supposed to call it in ti_iodelay_remove() then we need to
save the pointer somewhere using no_free_ptr().  Probably saving ->np
is the safest choice?

The original code is already a little bit buggy because it doesn't
check for pinctrl_enable() errors and cleanup.


diff --git a/drivers/pinctrl/ti/pinctrl-ti-iodelay.c b/drivers/pinctrl/ti/pinctrl-ti-iodelay.c
index 040f2c46a868..f40a1476e4ff 100644
--- a/drivers/pinctrl/ti/pinctrl-ti-iodelay.c
+++ b/drivers/pinctrl/ti/pinctrl-ti-iodelay.c
@@ -156,6 +156,7 @@ struct ti_iodelay_device {
 
 	const struct ti_iodelay_reg_data *reg_data;
 	struct ti_iodelay_reg_values reg_init_conf_values;
+	struct device_node *np;
 };
 
 /**
@@ -884,7 +885,12 @@ static int ti_iodelay_probe(struct platform_device *pdev)
 
 	platform_set_drvdata(pdev, iod);
 
-	return pinctrl_enable(iod->pctl);
+	ret = pinctrl_enable(iod->pctl);
+	if (ret)
+		goto exit_out;
+
+	iod->np = no_free_ptr(np);
+	return 0;
 
 exit_out:
 	of_node_put(np);
@@ -903,6 +909,7 @@ static void ti_iodelay_remove(struct platform_device *pdev)
 		pinctrl_unregister(iod->pctl);
 
 	ti_iodelay_pinconf_deinit_dev(iod);
+	of_node_put(iod->np);
 
 	/* Expect other allocations to be freed by devm */
 }





  reply	other threads:[~2024-05-01 13:32 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-01 12:55 [PATCH 00/21] pinctrl: Use scope based of_node_put() cleanups Peng Fan (OSS)
2024-05-01 12:55 ` [PATCH 01/21] pinctrl: ti: iodelay: " Peng Fan (OSS)
2024-05-01 13:32   ` Dan Carpenter [this message]
2024-05-02  0:28     ` Peng Fan
2024-05-02  7:05       ` Dan Carpenter
2024-05-01 12:56 ` [PATCH 02/21] pinctrl: tegra: " Peng Fan (OSS)
2024-05-01 12:56 ` [PATCH 03/21] pinctrl: sunplus: " Peng Fan (OSS)
2024-05-01 12:56 ` [PATCH 04/21] pinctrl: stm32: " Peng Fan (OSS)
2024-05-01 12:56 ` [PATCH 05/21] pinctrl: starfive: " Peng Fan (OSS)
2024-05-01 13:30   ` Emil Renner Berthing
2024-05-01 12:56 ` [PATCH 06/21] pinctrl: sprd: " Peng Fan (OSS)
2024-05-01 12:56 ` [PATCH 07/21] pinctrl: spear: " Peng Fan (OSS)
2024-05-01 12:56 ` [PATCH 08/21] pinctrl: samsung: " Peng Fan (OSS)
2024-05-01 16:34   ` Krzysztof Kozlowski
2024-05-01 23:25     ` Peng Fan
2024-05-01 12:56 ` [PATCH 09/21] pinctrl: renesas: " Peng Fan (OSS)
2024-05-01 12:56 ` [PATCH 10/21] pinctrl: st: " Peng Fan (OSS)
2024-05-01 17:16   ` Dan Carpenter
2024-05-01 12:56 ` [PATCH 11/21] pinctrl: rockchip: " Peng Fan (OSS)
2024-05-01 12:56 ` [PATCH 12/21] pinctrl: k210: " Peng Fan (OSS)
2024-05-02  9:45   ` Damien Le Moal
2024-05-01 12:56 ` [PATCH 13/21] pinctrl: equilibrium: " Peng Fan (OSS)
2024-05-01 12:56 ` [PATCH 14/21] pinctrl: at91: " Peng Fan (OSS)
2024-05-01 12:56 ` [PATCH 15/21] pinctrl: s32cc: " Peng Fan (OSS)
2024-05-01 12:56 ` [PATCH 16/21] pinctrl: nomadik: " Peng Fan (OSS)
2024-05-01 12:56 ` [PATCH 17/21] pinctrl: mediatek: " Peng Fan (OSS)
2024-05-01 12:56 ` [PATCH 18/21] pinctrl: freescale: " Peng Fan (OSS)
2024-05-01 12:56 ` [PATCH 19/21] pinctrl: bcm: bcm63xx: " Peng Fan (OSS)
2024-05-01 12:56 ` [PATCH 20/21] pinctrl: aspeed: g5: " Peng Fan (OSS)
2024-05-02  0:53   ` Andrew Jeffery
2024-05-02 11:52     ` Peng Fan
2024-05-01 12:56 ` [PATCH 21/21] pinctrl: pinconf-generic: " Peng Fan (OSS)
2024-05-03  7:19 ` [PATCH 00/21] pinctrl: " Linus Walleij
2024-05-03 23:11   ` Peng Fan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ee5c8637-b8b2-491b-b011-e399942691dc@moroto.mountain \
    --to=dan.carpenter@linaro.org \
    --cc=aisheng.dong@nxp.com \
    --cc=alexandre.belloni@bootlin.com \
    --cc=alexandre.torgue@foss.st.com \
    --cc=alim.akhtar@samsung.com \
    --cc=andrew@codeconstruct.com.au \
    --cc=angelogioacchino.delregno@collabora.com \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=chester62515@gmail.com \
    --cc=claudiu.beznea@tuxon.dev \
    --cc=dlemoal@kernel.org \
    --cc=dvorkin@tibbo.com \
    --cc=festevam@gmail.com \
    --cc=geert+renesas@glider.be \
    --cc=ghennadi.procopciuc@oss.nxp.com \
    --cc=hal.feng@starfivetech.com \
    --cc=heiko@sntech.de \
    --cc=imx@lists.linux.dev \
    --cc=jianlong.huang@starfivetech.com \
    --cc=joel@jms.id.au \
    --cc=jonathanh@nvidia.com \
    --cc=kernel@esmil.dk \
    --cc=kernel@pengutronix.de \
    --cc=krzk@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-aspeed@lists.ozlabs.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=linux-tegra@vger.kernel.org \
    --cc=ludovic.desroches@microchip.com \
    --cc=matthias.bgg@gmail.com \
    --cc=mbrugger@suse.com \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=nicolas.ferre@microchip.com \
    --cc=openbmc@lists.ozlabs.org \
    --cc=orsonzhai@gmail.com \
    --cc=patrice.chotard@foss.st.com \
    --cc=peng.fan@nxp.com \
    --cc=peng.fan@oss.nxp.com \
    --cc=ping.bai@nxp.com \
    --cc=s.hauer@pengutronix.de \
    --cc=s.nawrocki@samsung.com \
    --cc=sean.wang@kernel.org \
    --cc=shawnguo@kernel.org \
    --cc=shiraz.linux.kernel@gmail.com \
    --cc=soc@kernel.org \
    --cc=thierry.reding@gmail.com \
    --cc=vireshk@kernel.org \
    --cc=wellslutw@gmail.com \
    --cc=zhang.lyra@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).