RE: Re:RE: [PATCH] pinctrl: mcp23s08: reject devices without match data
From: Biju Das
Date: Mon Sep 28 2026 - 02:03:59 EST
Hi jiale yao,
> -----Original Message-----
> From: jiale yao <19888972804@xxxxxxx>
> Sent: 26 September 2026 11:24
> Subject: Re:RE: [PATCH] pinctrl: mcp23s08: reject devices without match data
>
> [You don't often get email from 19888972804@xxxxxxx. Learn why this is important at
> https://aka.ms/LearnAboutSenderIdentification ]
>
> Hi Biju,
>
> At 2026-09-26 18:07:14, "Biju Das" <biju.das.jz@xxxxxxxxxxxxxx> wrote:
> >Hi,
> >
> >> -----Original Message-----
> >> From: Jiale Yao <yaojiale02@xxxxxxx>
> >> Sent: 25 September 2026 14:38
> >> Subject: [PATCH] pinctrl: mcp23s08: reject devices without match data
> >>
> >> A device bound through driver_override need not match an entry in the
> >> driver tables. In that case
> >> spi_get_device_match_data() returns NULL, but mcp23s08_probe() later
> >> passes the result to the regmap setup and dereferences it while setting up each device.
> >
> >I believe this is an invalid use case as the user trying
> >driver_override and the probe returns error. Am I missing anything here?
>
> Yes, my commit message was not clear enough. This patch is intended to fix a regression introduced by
> commit 2e44555b05c0, rather than to make an unmatched device probe successfully through driver_override.
>
> Before that commit, missing match data effectively resulted in type 0, which fell through to the default
> switch case and returned -EINVAL.
> Commit 2e44555b05c0 replaced the type value with an info pointer, but the SPI path missed the
> corresponding NULL check before dereferencing
> info->type. The I2C path preserved the previous error handling with an
> explicit NULL check after the same conversion.
you are testing the driver with driver_override and your patch makes driver
Probe failure. I do not understand the test case you are trying to
achieve with driver_override.
Can you please share some logs with driver_override that you planned to test?
Cheers,
Biju
>
> Consequently, an unmatched device bound through driver_override used to fail cleanly. It can now cause a
> NULL pointer dereference when a valid spi-present-mask property is present. This patch restores the
> previous failure behavior.
>
> >
> >Can you please prepare a patch that makes the driver probe success by
> >using driver_override Feature? Also please share some logs to see how
> >it works in real device
> >
> >Cheers,
> >Biju
> >
> >>
> >> Reject devices without match data before reading device properties.
> >>
> >> Fixes: 2e44555b05c0 ("pinctrl: mcp23s08: Simplify
> >> probe()/mcp23s08_spi_regmap_init()")
> >> Signed-off-by: Jiale Yao <yaojiale02@xxxxxxx>
> >> ---
> >> drivers/pinctrl/pinctrl-mcp23s08_spi.c | 2 ++
> >> 1 file changed, 2 insertions(+)
> >>
> >> diff --git a/drivers/pinctrl/pinctrl-mcp23s08_spi.c
> >> b/drivers/pinctrl/pinctrl-mcp23s08_spi.c
> >> index bacebcff67ef..926034fcd512 100644
> >> --- a/drivers/pinctrl/pinctrl-mcp23s08_spi.c
> >> +++ b/drivers/pinctrl/pinctrl-mcp23s08_spi.c
> >> @@ -146,6 +146,8 @@ static int mcp23s08_probe(struct spi_device *spi)
> >> u8 v;
> >>
> >> info = spi_get_device_match_data(spi);
> >> + if (!info)
> >> + return -ENODATA;
> >>
> >> ret = device_property_read_u8(dev, "microchip,spi-present-mask", &v);
> >> if (ret) {
> >> --
> >> 2.34.1
>
> Cheers,
> Jiale