From: Boris Brezillon <boris.brezillon@free-electrons.com>
To: Alexey Khoroshilov <khoroshilov@ispras.ru>
Cc: Stefan Agner <stefan@agner.ch>,
ldv-project@linuxtesting.org, Richard Weinberger <richard@nod.at>,
linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] mtd: nand: vf610: fix error handling in vf610_nfc_probe()
Date: Sat, 6 Jan 2018 10:12:33 +0100 [thread overview]
Message-ID: <20180106101233.771c574e@bbrezillon> (raw)
In-Reply-To: <1514056706-25136-1-git-send-email-khoroshilov@ispras.ru>
On Sat, 23 Dec 2017 22:18:26 +0300
Alexey Khoroshilov <khoroshilov@ispras.ru> wrote:
> vf610_nfc_probe() misses error handling of mtd_device_register().
>
> Found by Linux Driver Verification project (linuxtesting.org).
>
> Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru>
> ---
> v2: Add nand_cleanup() to undone nand_scan_tail() as Boris Brezillon noted.
>
> drivers/mtd/nand/vf610_nfc.c | 25 +++++++++++++++----------
> 1 file changed, 15 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/mtd/nand/vf610_nfc.c b/drivers/mtd/nand/vf610_nfc.c
> index 8037d4b48a05..2dac25a8ccbf 100644
> --- a/drivers/mtd/nand/vf610_nfc.c
> +++ b/drivers/mtd/nand/vf610_nfc.c
> @@ -682,7 +682,7 @@ static int vf610_nfc_probe(struct platform_device *pdev)
> dev_err(nfc->dev,
> "Only one NAND chip supported!\n");
> err = -EINVAL;
> - goto error;
> + goto err_node;
> }
>
> nand_set_flash_node(chip, child);
> @@ -712,7 +712,7 @@ static int vf610_nfc_probe(struct platform_device *pdev)
> err = devm_request_irq(nfc->dev, irq, vf610_nfc_irq, 0, DRV_NAME, mtd);
> if (err) {
> dev_err(nfc->dev, "Error requesting IRQ!\n");
> - goto error;
> + goto err_node;
> }
>
> vf610_nfc_preinit_controller(nfc);
> @@ -720,7 +720,7 @@ static int vf610_nfc_probe(struct platform_device *pdev)
> /* first scan to find the device and get the page size */
> err = nand_scan_ident(mtd, 1, NULL);
> if (err)
> - goto error;
> + goto err_node;
>
> vf610_nfc_init_controller(nfc);
>
> @@ -732,20 +732,20 @@ static int vf610_nfc_probe(struct platform_device *pdev)
> if (mtd->writesize + mtd->oobsize > PAGE_2K + OOB_MAX - 8) {
> dev_err(nfc->dev, "Unsupported flash page size\n");
> err = -ENXIO;
> - goto error;
> + goto err_node;
> }
>
> if (chip->ecc.mode == NAND_ECC_HW) {
> if (mtd->writesize != PAGE_2K && mtd->oobsize < 64) {
> dev_err(nfc->dev, "Unsupported flash with hwecc\n");
> err = -ENXIO;
> - goto error;
> + goto err_node;
> }
>
> if (chip->ecc.size != mtd->writesize) {
> dev_err(nfc->dev, "Step size needs to be page size\n");
> err = -ENXIO;
> - goto error;
> + goto err_node;
> }
>
> /* Only 64 byte ECC layouts known */
> @@ -765,7 +765,7 @@ static int vf610_nfc_probe(struct platform_device *pdev)
> } else {
> dev_err(nfc->dev, "Unsupported ECC strength\n");
> err = -ENXIO;
> - goto error;
> + goto err_node;
> }
>
> chip->ecc.read_page = vf610_nfc_read_page;
> @@ -777,14 +777,19 @@ static int vf610_nfc_probe(struct platform_device *pdev)
> /* second phase scan */
> err = nand_scan_tail(mtd);
> if (err)
> - goto error;
> + goto err_node;
>
> platform_set_drvdata(pdev, mtd);
>
> /* Register device in MTD */
> - return mtd_device_register(mtd, NULL, 0);
> + err = mtd_device_register(mtd, NULL, 0);
> + if (err)
> + goto err_nand;
> + return 0;
>
> -error:
> +err_nand:
> + nand_cleanup(chip);
> +err_node:
> of_node_put(nand_get_flash_node(chip));
Can you use clearer err labels, like err_put_node and err_cleanup_nand?
> err_clk:
> clk_disable_unprepare(nfc->clk);
next prev parent reply other threads:[~2018-01-06 9:13 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-22 21:43 [PATCH] mtd: nand: vf610: fix error handling in vf610_nfc_probe() Alexey Khoroshilov
2017-12-22 21:57 ` Boris Brezillon
2017-12-23 19:18 ` [PATCH v2] " Alexey Khoroshilov
2018-01-06 9:12 ` Boris Brezillon [this message]
2018-01-06 9:25 ` Boris Brezillon
2018-01-26 22:32 ` [PATCH v3] " Alexey Khoroshilov
2018-01-30 13:11 ` Boris Brezillon
2018-02-09 22:28 ` [PATCH v4 0/3] " Alexey Khoroshilov
2018-02-09 22:28 ` [PATCH v4 1/3] mtd: nand: vf610: remove the unnecessary of_node_put() Alexey Khoroshilov
2018-02-09 22:28 ` [PATCH v4 2/3] mtd: nand: vf610: improve readability of error label Alexey Khoroshilov
2018-02-09 22:28 ` [PATCH v4 3/3] mtd: nand: vf610: check mtd_device_register() return code Alexey Khoroshilov
2018-02-10 9:43 ` Stefan Agner
2018-02-12 21:31 ` [PATCH v4 0/3] mtd: nand: vf610: fix error handling in vf610_nfc_probe() Boris Brezillon
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=20180106101233.771c574e@bbrezillon \
--to=boris.brezillon@free-electrons.com \
--cc=khoroshilov@ispras.ru \
--cc=ldv-project@linuxtesting.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=richard@nod.at \
--cc=stefan@agner.ch \
/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.