From: Arnd Bergmann <arnd@kernel.org>
To: Pratyush Yadav <pratyush@kernel.org>,
Michael Walle <mwalle@kernel.org>,
Miquel Raynal <miquel.raynal@bootlin.com>,
Richard Weinberger <richard@nod.at>,
Vignesh Raghavendra <vigneshr@ti.com>
Cc: Arnd Bergmann <arnd@arndb.de>,
Takahiro Kuwano <takahiro.kuwano@infineon.com>,
Tudor Ambarus <tudor.ambarus@linaro.org>,
HyeongJun An <sammiee5311@gmail.com>,
linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: [PATCH] mtd: spi-nor: reduce stack usage in spi_nor_parse_sfdp()
Date: Tue, 15 Sep 2026 21:40:31 +0200 [thread overview]
Message-ID: <20260915194203.3511147-1-arnd@kernel.org> (raw)
From: Arnd Bergmann <arnd@arndb.de>
Two large spi_nor_flash_parameter structures on a function stack
is really too much, and this can exceed an otherwise reasonable
frame limit:
drivers/mtd/spi-nor/sfdp.c: In function 'spi_nor_parse_sfdp':
drivers/mtd/spi-nor/sfdp.c:1717:1: error: the frame size of 1600 bytes is larger than 1536 bytes [-Werror=frame-larger-than=]
Change one of them to a dynamic allocation to make this more reasonable.
Fixes: d20029474a76 ("mtd: spi-nor: push the rollback mechanism into the sfdp module")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
drivers/mtd/spi-nor/sfdp.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/mtd/spi-nor/sfdp.c b/drivers/mtd/spi-nor/sfdp.c
index c21a6953db96..5d0901074f50 100644
--- a/drivers/mtd/spi-nor/sfdp.c
+++ b/drivers/mtd/spi-nor/sfdp.c
@@ -1520,7 +1520,7 @@ int spi_nor_parse_sfdp(struct spi_nor *nor)
{
const struct sfdp_parameter_header *param_header, *bfpt_header;
struct sfdp_parameter_header *param_headers = NULL;
- struct spi_nor_flash_parameter params, params2;
+ struct spi_nor_flash_parameter __free(kfree) *params = NULL;
struct sfdp_header header;
struct device *dev = nor->dev;
struct sfdp *sfdp;
@@ -1532,7 +1532,9 @@ int spi_nor_parse_sfdp(struct spi_nor *nor)
* Get a backup of all the parameter to roll back to in case of an
* error.
*/
- memcpy(¶ms, nor->params, sizeof(params));
+ params = kmemdup(nor->params, sizeof(*params), GFP_KERNEL);
+ if (!params)
+ return -ENOMEM;
/* Get the SFDP header. */
err = spi_nor_read_sfdp_dma_unsafe(nor, 0, sizeof(header), &header);
@@ -1652,6 +1654,8 @@ int spi_nor_parse_sfdp(struct spi_nor *nor)
/* Parse optional parameter tables. */
for (i = 0; i < header.nph; i++) {
+ struct spi_nor_flash_parameter params2;
+
memcpy(¶ms2, nor->params, sizeof(params2));
param_header = ¶m_headers[i];
@@ -1711,7 +1715,7 @@ int spi_nor_parse_sfdp(struct spi_nor *nor)
free_param_headers:
kfree(param_headers);
if (err)
- memcpy(nor->params, ¶ms, sizeof(*nor->params));
+ memcpy(nor->params, params, sizeof(*nor->params));
return err;
}
--
2.53.0
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
next reply other threads:[~2026-09-15 19:42 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-15 19:40 Arnd Bergmann [this message]
2026-09-15 19:48 ` [PATCH] mtd: spi-nor: reduce stack usage in spi_nor_parse_sfdp() sashiko-bot
2026-09-16 10:05 ` David Laight
2026-09-21 7:55 ` Michael Walle
2026-09-21 8:59 ` David Laight
2026-09-21 9:24 ` Michael Walle
2026-09-21 10:41 ` David Laight
2026-10-07 12:57 ` Michael Walle
2026-10-07 13:02 ` Tudor Ambarus
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=20260915194203.3511147-1-arnd@kernel.org \
--to=arnd@kernel.org \
--cc=arnd@arndb.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=miquel.raynal@bootlin.com \
--cc=mwalle@kernel.org \
--cc=pratyush@kernel.org \
--cc=richard@nod.at \
--cc=sammiee5311@gmail.com \
--cc=takahiro.kuwano@infineon.com \
--cc=tudor.ambarus@linaro.org \
--cc=vigneshr@ti.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 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.