2022-05-23 06:04:37

by Christophe JAILLET

[permalink] [raw]
Subject: [PATCH] mtd: rawnand: meson: Fix a potential double free issue

When meson_nfc_nand_chip_cleanup() is called, it will call:
meson_nfc_free_buffer(&meson_chip->nand);
nand_cleanup(&meson_chip->nand);

nand_cleanup() in turn will call nand_detach() which calls the
.detach_chip() which is here meson_nand_detach_chip().

meson_nand_detach_chip() already calls meson_nfc_free_buffer(), so we
could double free some memory.

Fix it by removing the unneeded explicit call to meson_nfc_free_buffer().

Fixes: 8fae856c5350 ("mtd: rawnand: meson: add support for Amlogic NAND flash controller")
Signed-off-by: Christophe JAILLET <[email protected]>
---
This patch is speculative, so review with care.
---
drivers/mtd/nand/raw/meson_nand.c | 1 -
1 file changed, 1 deletion(-)

diff --git a/drivers/mtd/nand/raw/meson_nand.c b/drivers/mtd/nand/raw/meson_nand.c
index ac3be92872d0..032180183339 100644
--- a/drivers/mtd/nand/raw/meson_nand.c
+++ b/drivers/mtd/nand/raw/meson_nand.c
@@ -1307,7 +1307,6 @@ static int meson_nfc_nand_chip_cleanup(struct meson_nfc *nfc)
if (ret)
return ret;

- meson_nfc_free_buffer(&meson_chip->nand);
nand_cleanup(&meson_chip->nand);
list_del(&meson_chip->node);
}
--
2.34.1



2022-05-28 18:59:34

by Liang Yang

[permalink] [raw]
Subject: Re: [PATCH] mtd: rawnand: meson: Fix a potential double free issue

Hi Christophe,

On 2022/5/21 0:41, Christophe JAILLET wrote:
> [ EXTERNAL EMAIL ]
>
> When meson_nfc_nand_chip_cleanup() is called, it will call:
> meson_nfc_free_buffer(&meson_chip->nand);
> nand_cleanup(&meson_chip->nand);
>
> nand_cleanup() in turn will call nand_detach() which calls the
> .detach_chip() which is here meson_nand_detach_chip().
>
> meson_nand_detach_chip() already calls meson_nfc_free_buffer(), so we
> could double free some memory.
>
> Fix it by removing the unneeded explicit call to meson_nfc_free_buffer().
>
> Fixes: 8fae856c5350 ("mtd: rawnand: meson: add support for Amlogic NAND flash controller")
> Signed-off-by: Christophe JAILLET <[email protected]>
> ---
> This patch is speculative, so review with care.
> ---
> drivers/mtd/nand/raw/meson_nand.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/mtd/nand/raw/meson_nand.c b/drivers/mtd/nand/raw/meson_nand.c
> index ac3be92872d0..032180183339 100644
> --- a/drivers/mtd/nand/raw/meson_nand.c
> +++ b/drivers/mtd/nand/raw/meson_nand.c
> @@ -1307,7 +1307,6 @@ static int meson_nfc_nand_chip_cleanup(struct meson_nfc *nfc)
> if (ret)
> return ret;
>
> - meson_nfc_free_buffer(&meson_chip->nand);
> nand_cleanup(&meson_chip->nand);
> list_del(&meson_chip->node);
> }

Acked-by: Liang Yang <[email protected]>

Thanks,
Liang

2022-06-09 13:18:51

by Miquel Raynal

[permalink] [raw]
Subject: Re: [PATCH] mtd: rawnand: meson: Fix a potential double free issue

On Fri, 2022-05-20 at 16:41:40 UTC, Christophe JAILLET wrote:
> When meson_nfc_nand_chip_cleanup() is called, it will call:
> meson_nfc_free_buffer(&meson_chip->nand);
> nand_cleanup(&meson_chip->nand);
>
> nand_cleanup() in turn will call nand_detach() which calls the
> .detach_chip() which is here meson_nand_detach_chip().
>
> meson_nand_detach_chip() already calls meson_nfc_free_buffer(), so we
> could double free some memory.
>
> Fix it by removing the unneeded explicit call to meson_nfc_free_buffer().
>
> Fixes: 8fae856c5350 ("mtd: rawnand: meson: add support for Amlogic NAND flash controller")
> Signed-off-by: Christophe JAILLET <[email protected]>
> Acked-by: Liang Yang <[email protected]>

Applied to https://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git nand/next, thanks.

Miquel