From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Xin Xiong <xiongx18@fudan.edu.cn>
Cc: Tudor Ambarus <tudor.ambarus@microchip.com>,
Richard Weinberger <richard@nod.at>,
Vignesh Raghavendra <vigneshr@ti.com>,
Nicolas Ferre <nicolas.ferre@microchip.com>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Ludovic Desroches <ludovic.desroches@microchip.com>,
linux-mtd@lists.infradead.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, yuanxzhang@fudan.edu.cn,
Xiyu Yang <xiyuyang19@fudan.edu.cn>,
Xin Tan <tanxin.ctf@gmail.com>
Subject: Re: [PATCH] mtd: rawnand: atmel: fix refcount leaks in atmel_nand_controller_init
Date: Tue, 25 Jan 2022 18:55:56 +0100 [thread overview]
Message-ID: <20220125185556.6afb7eba@xps13> (raw)
In-Reply-To: <20220125123155.36891-1-xiongx18@fudan.edu.cn>
Hi Xin,
xiongx18@fudan.edu.cn wrote on Tue, 25 Jan 2022 20:31:56 +0800:
> The reference counting issue happens in several error handling paths
> on a refcounted object "nc->dmac". In these paths, the function simply
> returns the error code, forgetting to balance the reference count
> increased earlier by dma_request_channel(), which may cause refcount
> leaks. What's more, the "nc->mck" object also needs to be handled
> correctly.
You might want to split this into two commits.
>
> Fix it by adding specific error handling code in those error paths.
You need a Fixes tag here.
> Signed-off-by: Xin Xiong <xiongx18@fudan.edu.cn>
> Signed-off-by: Xiyu Yang <xiyuyang19@fudan.edu.cn>
> Signed-off-by: Xin Tan <tanxin.ctf@gmail.com>
You can't do that. The patch is rather straightforward, so 3
authorship seem a little bit too much.
If someone suggested you a change, or sent you a proposal, you should
use a Suggested-by. If it was reported by a colleague, use Reported-by.
If it was co-developped, use the right tag and the right Signed-off-by
as documented in the submitted-process.rst file. If you picked the
patch from someone else, you must preserve the authorship and just add
your SoB.
> ---
> drivers/mtd/nand/raw/atmel/nand-controller.c | 22 +++++++++++++++++---
> 1 file changed, 19 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mtd/nand/raw/atmel/nand-controller.c b/drivers/mtd/nand/raw/atmel/nand-controller.c
> index f3276ee9e..b3801ebd2 100644
> --- a/drivers/mtd/nand/raw/atmel/nand-controller.c
> +++ b/drivers/mtd/nand/raw/atmel/nand-controller.c
> @@ -2060,13 +2060,15 @@ static int atmel_nand_controller_init(struct atmel_nand_controller *nc,
> nc->mck = of_clk_get(dev->parent->of_node, 0);
> if (IS_ERR(nc->mck)) {
> dev_err(dev, "Failed to retrieve MCK clk\n");
> - return PTR_ERR(nc->mck);
> + ret = PTR_ERR(nc->mck);
> + goto out_release_dma;
> }
>
> np = of_parse_phandle(dev->parent->of_node, "atmel,smc", 0);
> if (!np) {
> dev_err(dev, "Missing or invalid atmel,smc property\n");
> - return -EINVAL;
> + ret = -EINVAL;
> + goto out_put_clk;
> }
>
> nc->smc = syscon_node_to_regmap(np);
> @@ -2074,10 +2076,24 @@ static int atmel_nand_controller_init(struct atmel_nand_controller *nc,
> if (IS_ERR(nc->smc)) {
> ret = PTR_ERR(nc->smc);
> dev_err(dev, "Could not get SMC regmap (err = %d)\n", ret);
> - return ret;
> + goto out_put_clk;
> }
>
> return 0;
> +
> +out_put_clk:
> + clk_put(nc->mck);
> + nc->mck = NULL;
> +
> +out_release_dma:
> + if (nc->caps->has_dma && !atmel_nand_avoid_dma) {
> + if (!IS_ERR_OR_NULL(nc->dmac)) {
&& !IS_ERR...
> + dma_release_channel(nc->dmac);
> + nc->dmac = NULL;
> + }
> + }
> +
> + return ret;
> }
>
> static int
Thanks,
Miquèl
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
WARNING: multiple messages have this Message-ID (diff)
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Xin Xiong <xiongx18@fudan.edu.cn>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>,
Vignesh Raghavendra <vigneshr@ti.com>,
Xiyu Yang <xiyuyang19@fudan.edu.cn>,
Tudor Ambarus <tudor.ambarus@microchip.com>,
Richard Weinberger <richard@nod.at>,
yuanxzhang@fudan.edu.cn, linux-kernel@vger.kernel.org,
Ludovic Desroches <ludovic.desroches@microchip.com>,
linux-mtd@lists.infradead.org, Xin Tan <tanxin.ctf@gmail.com>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH] mtd: rawnand: atmel: fix refcount leaks in atmel_nand_controller_init
Date: Tue, 25 Jan 2022 18:55:56 +0100 [thread overview]
Message-ID: <20220125185556.6afb7eba@xps13> (raw)
In-Reply-To: <20220125123155.36891-1-xiongx18@fudan.edu.cn>
Hi Xin,
xiongx18@fudan.edu.cn wrote on Tue, 25 Jan 2022 20:31:56 +0800:
> The reference counting issue happens in several error handling paths
> on a refcounted object "nc->dmac". In these paths, the function simply
> returns the error code, forgetting to balance the reference count
> increased earlier by dma_request_channel(), which may cause refcount
> leaks. What's more, the "nc->mck" object also needs to be handled
> correctly.
You might want to split this into two commits.
>
> Fix it by adding specific error handling code in those error paths.
You need a Fixes tag here.
> Signed-off-by: Xin Xiong <xiongx18@fudan.edu.cn>
> Signed-off-by: Xiyu Yang <xiyuyang19@fudan.edu.cn>
> Signed-off-by: Xin Tan <tanxin.ctf@gmail.com>
You can't do that. The patch is rather straightforward, so 3
authorship seem a little bit too much.
If someone suggested you a change, or sent you a proposal, you should
use a Suggested-by. If it was reported by a colleague, use Reported-by.
If it was co-developped, use the right tag and the right Signed-off-by
as documented in the submitted-process.rst file. If you picked the
patch from someone else, you must preserve the authorship and just add
your SoB.
> ---
> drivers/mtd/nand/raw/atmel/nand-controller.c | 22 +++++++++++++++++---
> 1 file changed, 19 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mtd/nand/raw/atmel/nand-controller.c b/drivers/mtd/nand/raw/atmel/nand-controller.c
> index f3276ee9e..b3801ebd2 100644
> --- a/drivers/mtd/nand/raw/atmel/nand-controller.c
> +++ b/drivers/mtd/nand/raw/atmel/nand-controller.c
> @@ -2060,13 +2060,15 @@ static int atmel_nand_controller_init(struct atmel_nand_controller *nc,
> nc->mck = of_clk_get(dev->parent->of_node, 0);
> if (IS_ERR(nc->mck)) {
> dev_err(dev, "Failed to retrieve MCK clk\n");
> - return PTR_ERR(nc->mck);
> + ret = PTR_ERR(nc->mck);
> + goto out_release_dma;
> }
>
> np = of_parse_phandle(dev->parent->of_node, "atmel,smc", 0);
> if (!np) {
> dev_err(dev, "Missing or invalid atmel,smc property\n");
> - return -EINVAL;
> + ret = -EINVAL;
> + goto out_put_clk;
> }
>
> nc->smc = syscon_node_to_regmap(np);
> @@ -2074,10 +2076,24 @@ static int atmel_nand_controller_init(struct atmel_nand_controller *nc,
> if (IS_ERR(nc->smc)) {
> ret = PTR_ERR(nc->smc);
> dev_err(dev, "Could not get SMC regmap (err = %d)\n", ret);
> - return ret;
> + goto out_put_clk;
> }
>
> return 0;
> +
> +out_put_clk:
> + clk_put(nc->mck);
> + nc->mck = NULL;
> +
> +out_release_dma:
> + if (nc->caps->has_dma && !atmel_nand_avoid_dma) {
> + if (!IS_ERR_OR_NULL(nc->dmac)) {
&& !IS_ERR...
> + dma_release_channel(nc->dmac);
> + nc->dmac = NULL;
> + }
> + }
> +
> + return ret;
> }
>
> static int
Thanks,
Miquèl
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2022-01-25 17:57 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-25 12:31 [PATCH] mtd: rawnand: atmel: fix refcount leaks in atmel_nand_controller_init Xin Xiong
2022-01-25 12:31 ` Xin Xiong
2022-01-25 17:55 ` Miquel Raynal [this message]
2022-01-25 17:55 ` Miquel Raynal
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=20220125185556.6afb7eba@xps13 \
--to=miquel.raynal@bootlin.com \
--cc=alexandre.belloni@bootlin.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=ludovic.desroches@microchip.com \
--cc=nicolas.ferre@microchip.com \
--cc=richard@nod.at \
--cc=tanxin.ctf@gmail.com \
--cc=tudor.ambarus@microchip.com \
--cc=vigneshr@ti.com \
--cc=xiongx18@fudan.edu.cn \
--cc=xiyuyang19@fudan.edu.cn \
--cc=yuanxzhang@fudan.edu.cn \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.