All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Santhosh Kumar K" <s-k6@ti.com>
Cc: robh@kernel.org, conor+dt@kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH v3 11/13] mtd: spinand: run PHY tuning after init and update dirmap frequencies
Date: Wed, 27 May 2026 19:04:39 +0000	[thread overview]
Message-ID: <20260527190440.9DB221F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260527175527.2247679-12-s-k6@ti.com>

Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:

New issues:
- [High] Mutating `spi_mem_dirmap_desc` fields after creation bypasses SPI controller hardware configuration and validation checks.
- [High] Validated frequencies from `read_cache` and `write_cache` are blindly applied to mismatched or unvalidated secondary operation templates.

Pre-existing issues:
- [High] Teardown symmetry violation in `spinand_remove` leads to a Use-After-Free of the `spinand` device and memory leaks if `mtd_device_unregister` fails.
--

commit 82e2a165fb470e6047a759242be19d68a59ffe43
Author: Santhosh Kumar K <s-k6@ti.com>

mtd: spinand: run PHY tuning after init and update dirmap frequencies

This commit modifies spinand_probe() to run PHY tuning after spinand_init()
has completed. It then directly updates the dirmaps with the newly validated
maximum frequencies for both primary and secondary operation templates.

> diff --git a/drivers/mtd/nand/spi/core.c b/drivers/mtd/nand/spi/core.c
> --- a/drivers/mtd/nand/spi/core.c
> +++ b/drivers/mtd/nand/spi/core.c

[ ... ]

> @@ -2050,6 +2050,41 @@ static int spinand_probe(struct spi_mem *mem)

[ ... ]

> +	if (!ret) {
> +		struct nand_device *nand = spinand_to_nand(spinand);
> +		int i;
> +
> +		for (i = 0; i < nand->memorg.planes_per_lun; i++) {
> +			if (spinand->dirmaps[i].rdesc) {
> +				spinand->dirmaps[i].rdesc->info.primary_op_tmpl.max_freq =
> +					spinand->max_read_op.max_freq;

[Severity: High]
Does mutating spi_mem_dirmap_desc fields after creation bypass the SPI
controller hardware configuration and validation checks?

The dirmap is fully initialized earlier during spinand_init(), where
controllers execute their dirmap_create callbacks to calculate clock
dividers and cache hardware registers based on the initial max_freq.

If we directly mutate the frequency here without notifying the controller,
will the hardware remain configured for the old, un-tuned frequency while
the SPI core assumes the new frequency, potentially causing a state
desynchronization or data corruption?

> +				spinand->dirmaps[i].rdesc->info.secondary_op_tmpl.max_freq =
> +					spinand->max_read_op.max_freq;
> +			}
> +			if (spinand->dirmaps[i].wdesc)
> +				spinand->dirmaps[i].wdesc->info.primary_op_tmpl.max_freq =
> +					spinand->max_write_op.max_freq;

[Severity: High]
Is it safe to apply the validated frequencies from the read_cache and
write_cache templates directly to these other operation templates?

The PHY tuning is executed specifically on the write_cache and read_cache
templates. However, wdesc->info.primary_op_tmpl is based on update_cache,
and rdesc->info.secondary_op_tmpl is used for cont_read_cache.

Since these operations utilize different opcodes and potentially different
dummy cycles, could applying the frequency of one tuned operation to a
different unvalidated operation cause silent data corruption?

> +		}
> +	}
> +
>  	ret = mtd_device_register(mtd, NULL, 0);

[Severity: High]
This is a pre-existing issue, but can spinand_remove() cause a use-after-free
and memory leak if mtd_device_unregister() fails?

If mtd_device_unregister() returns an error code, spinand_remove()
immediately returns this error and skips spinand_cleanup(), leaking
databuf and scratchbuf.

Because the SPI framework's wrapper spi_mem_remove() returns void and ignores
the error, the driver core will proceed to unbind the device and free all
devm_kzalloc allocated memory, including the spinand structure.

Since the MTD device wasn't unregistered, the MTD subsystem retains active
pointers to the freed spinand structure. Could this lead to a use-after-free
vulnerability upon subsequent accesses?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260527175527.2247679-1-s-k6@ti.com?part=11

  reply	other threads:[~2026-05-27 19:04 UTC|newest]

Thread overview: 142+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-27 17:55 [PATCH v3 00/13] spi: cadence-quadspi: add PHY tuning support Santhosh Kumar K
2026-05-27 17:55 ` Santhosh Kumar K
2026-05-27 17:55 ` [PATCH v3 01/13] spi: dt-bindings: allow spi-max-frequency to specify a frequency pair Santhosh Kumar K
2026-05-27 17:55   ` Santhosh Kumar K
2026-05-27 18:17   ` sashiko-bot
2026-05-28  8:32   ` Miquel Raynal
2026-05-28  8:32     ` Miquel Raynal
2026-05-28 17:36   ` Conor Dooley
2026-05-28 17:36     ` Conor Dooley
2026-05-30  8:54     ` Krzysztof Kozlowski
2026-05-30  8:54       ` Krzysztof Kozlowski
2026-06-01  7:45     ` Santhosh Kumar K
2026-06-01  7:45       ` Santhosh Kumar K
2026-06-02 12:05       ` Miquel Raynal
2026-06-02 12:05         ` Miquel Raynal
2026-06-02 16:18         ` Conor Dooley
2026-06-02 16:18           ` Conor Dooley
2026-06-03 15:54           ` Miquel Raynal
2026-06-03 15:54             ` Miquel Raynal
2026-06-03 16:07             ` Conor Dooley
2026-06-03 16:07               ` Conor Dooley
2026-06-03 16:29               ` Miquel Raynal
2026-06-03 16:29                 ` Miquel Raynal
2026-06-03 16:40                 ` Conor Dooley
2026-06-03 16:40                   ` Conor Dooley
2026-06-04  7:14                   ` Miquel Raynal
2026-06-04  7:14                     ` Miquel Raynal
2026-06-04  8:36                     ` Conor Dooley
2026-06-04  8:36                       ` Conor Dooley
2026-06-05  6:32                       ` Miquel Raynal
2026-06-05  6:32                         ` Miquel Raynal
2026-06-05  7:17                         ` Conor Dooley
2026-06-05  7:17                           ` Conor Dooley
2026-06-05  7:26                           ` Miquel Raynal
2026-06-05  7:26                             ` Miquel Raynal
2026-06-05 15:20                             ` Conor Dooley
2026-06-05 15:20                               ` Conor Dooley
2026-06-05 16:55                               ` Miquel Raynal
2026-06-05 16:55                                 ` Miquel Raynal
2026-05-27 17:55 ` [PATCH v3 02/13] spi: dt-bindings: cdns,qspi-nor: add PHY tuning pattern partition property Santhosh Kumar K
2026-05-27 17:55   ` Santhosh Kumar K
2026-05-27 18:11   ` sashiko-bot
2026-05-28  8:34   ` Miquel Raynal
2026-05-28  8:34     ` Miquel Raynal
2026-05-30  8:52   ` Krzysztof Kozlowski
2026-05-30  8:52     ` Krzysztof Kozlowski
2026-06-01  8:26     ` Santhosh Kumar K
2026-06-01  8:26       ` Santhosh Kumar K
2026-06-01 11:26       ` Krzysztof Kozlowski
2026-06-01 11:26         ` Krzysztof Kozlowski
2026-06-01 11:47         ` Krzysztof Kozlowski
2026-06-01 11:47           ` Krzysztof Kozlowski
2026-06-02  6:30           ` Santhosh Kumar K
2026-06-02  6:30             ` Santhosh Kumar K
2026-06-02 12:08             ` Krzysztof Kozlowski
2026-06-02 12:08               ` Krzysztof Kozlowski
2026-06-02 12:36             ` Miquel Raynal
2026-06-02 12:36               ` Miquel Raynal
2026-06-02 12:48               ` Krzysztof Kozlowski
2026-06-02 12:48                 ` Krzysztof Kozlowski
2026-06-04 12:01                 ` Santhosh Kumar K
2026-06-04 12:01                   ` Santhosh Kumar K
2026-06-02 16:49   ` Rob Herring
2026-06-02 16:49     ` Rob Herring
2026-06-03 16:01     ` Miquel Raynal
2026-06-03 16:01       ` Miquel Raynal
2026-06-03 17:38       ` Rob Herring
2026-06-03 17:38         ` Rob Herring
2026-06-03 19:00         ` Michael Walle
2026-06-03 19:00           ` Michael Walle
2026-06-04 12:07           ` Santhosh Kumar K
2026-06-04 12:07             ` Santhosh Kumar K
2026-06-04  7:28         ` Miquel Raynal
2026-06-04  7:28           ` Miquel Raynal
2026-06-04 12:04           ` Santhosh Kumar K
2026-06-04 12:04             ` Santhosh Kumar K
2026-05-27 17:55 ` [PATCH v3 03/13] spi: parse two-element spi-max-frequency property Santhosh Kumar K
2026-05-27 17:55   ` Santhosh Kumar K
2026-05-27 18:19   ` sashiko-bot
2026-05-28  8:37   ` Miquel Raynal
2026-05-28  8:37     ` Miquel Raynal
2026-05-27 17:55 ` [PATCH v3 04/13] spi: spi-mem: add spi_mem_apply_base_freq_cap() Santhosh Kumar K
2026-05-27 17:55   ` Santhosh Kumar K
2026-05-27 18:32   ` sashiko-bot
2026-05-28  8:43   ` Miquel Raynal
2026-05-28  8:43     ` Miquel Raynal
2026-06-04 12:10     ` Santhosh Kumar K
2026-06-04 12:10       ` Santhosh Kumar K
2026-06-05  6:15       ` Miquel Raynal
2026-06-05  6:15         ` Miquel Raynal
2026-05-27 17:55 ` [PATCH v3 05/13] spi: spi-mem: add execute_tuning callback and spi_mem_execute_tuning() Santhosh Kumar K
2026-05-27 17:55   ` Santhosh Kumar K
2026-05-27 18:21   ` sashiko-bot
2026-05-28  8:44   ` Miquel Raynal
2026-05-28  8:44     ` Miquel Raynal
2026-05-27 17:55 ` [PATCH v3 06/13] spi: cadence-quadspi: move cqspi_readdata_capture earlier Santhosh Kumar K
2026-05-27 17:55   ` Santhosh Kumar K
2026-05-27 17:55 ` [PATCH v3 07/13] spi: cadence-quadspi: add DQS support to read data capture Santhosh Kumar K
2026-05-27 17:55   ` Santhosh Kumar K
2026-05-27 18:17   ` sashiko-bot
2026-05-27 17:55 ` [PATCH v3 08/13] spi: cadence-quadspi: add PHY tuning support Santhosh Kumar K
2026-05-27 17:55   ` Santhosh Kumar K
2026-05-27 18:44   ` sashiko-bot
2026-05-28  8:54   ` Miquel Raynal
2026-05-28  8:54     ` Miquel Raynal
2026-06-01  8:44     ` Santhosh Kumar K
2026-06-01  8:44       ` Santhosh Kumar K
2026-05-27 17:55 ` [PATCH v3 09/13] spi: cadence-quadspi: reject 2-byte-address DDR ops on PHY-tunable hardware Santhosh Kumar K
2026-05-27 17:55   ` Santhosh Kumar K
2026-05-28  9:01   ` Miquel Raynal
2026-05-28  9:01     ` Miquel Raynal
2026-06-01  9:27     ` Santhosh Kumar K
2026-06-01  9:27       ` Santhosh Kumar K
2026-06-02 12:25       ` Miquel Raynal
2026-06-02 12:25         ` Miquel Raynal
2026-05-27 17:55 ` [PATCH v3 10/13] spi: cadence-quadspi: enable PHY for direct reads and indirect writes Santhosh Kumar K
2026-05-27 17:55   ` Santhosh Kumar K
2026-05-27 18:36   ` sashiko-bot
2026-05-28  9:09   ` Miquel Raynal
2026-05-28  9:09     ` Miquel Raynal
2026-06-01  8:39     ` Santhosh Kumar K
2026-06-01  8:39       ` Santhosh Kumar K
2026-06-02 12:15       ` Miquel Raynal
2026-06-02 12:15         ` Miquel Raynal
2026-05-27 17:55 ` [PATCH v3 11/13] mtd: spinand: run PHY tuning after init and update dirmap frequencies Santhosh Kumar K
2026-05-27 17:55   ` Santhosh Kumar K
2026-05-27 19:04   ` sashiko-bot [this message]
2026-05-28  9:27   ` Miquel Raynal
2026-05-28  9:27     ` Miquel Raynal
2026-06-01  9:16     ` Santhosh Kumar K
2026-06-01  9:16       ` Santhosh Kumar K
2026-06-02 12:18       ` Miquel Raynal
2026-06-02 12:18         ` Miquel Raynal
2026-05-27 17:55 ` [PATCH v3 12/13] mtd: spi-nor: extract read op template construction into helper Santhosh Kumar K
2026-05-27 17:55   ` Santhosh Kumar K
2026-05-27 17:55 ` [PATCH v3 13/13] mtd: spi-nor: run PHY tuning after init and update dirmap frequency Santhosh Kumar K
2026-05-27 17:55   ` Santhosh Kumar K
2026-05-27 18:59   ` sashiko-bot
2026-05-28  8:30 ` [PATCH v3 00/13] spi: cadence-quadspi: add PHY tuning support Miquel Raynal
2026-05-28  8:30   ` Miquel Raynal
2026-06-01  8:02   ` Santhosh Kumar K
2026-06-01  8:02     ` Santhosh Kumar K

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=20260527190440.9DB221F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=robh@kernel.org \
    --cc=s-k6@ti.com \
    --cc=sashiko-reviews@lists.linux.dev \
    /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.