From b70a56ddecfef57d1935a6a068c53557374740e6 Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Tue, 11 Mar 2025 08:51:19 +0900 Subject: [PATCH] mtd: rawnand: fix double free in atmel_pmecc_create_user() BugLink: https://bugs.launchpad.net/bugs/2101915 commit d8e4771f99c0400a1873235704b28bb803c83d17 upstream. The "user" pointer was converted from being allocated with kzalloc() to being allocated by devm_kzalloc(). Calling kfree(user) will lead to a double free. Fixes: 6d734f1bfc33 ("mtd: rawnand: atmel: Fix possible memory leak") Signed-off-by: Dan Carpenter Signed-off-by: Miquel Raynal Signed-off-by: Greg Kroah-Hartman (cherry picked from commit dd45c87782738715d5e7c167f8dabf0814a7394a linux-6.6.y) [koichiroden: follow-up fix from v6.6.69] Signed-off-by: Koichiro Den Signed-off-by: Stefan Bader --- drivers/mtd/nand/raw/atmel/pmecc.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/mtd/nand/raw/atmel/pmecc.c b/drivers/mtd/nand/raw/atmel/pmecc.c index a22aab4ed4e8..3c7dee1be21d 100644 --- a/drivers/mtd/nand/raw/atmel/pmecc.c +++ b/drivers/mtd/nand/raw/atmel/pmecc.c @@ -380,10 +380,8 @@ atmel_pmecc_create_user(struct atmel_pmecc *pmecc, user->delta = user->dmu + req->ecc.strength + 1; gf_tables = atmel_pmecc_get_gf_tables(req); - if (IS_ERR(gf_tables)) { - kfree(user); + if (IS_ERR(gf_tables)) return ERR_CAST(gf_tables); - } user->gf_tables = gf_tables;