]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
spi: stm32: Check for cfg availability in stm32_spi_probe
authorClément Le Goffic <clement.legoffic@foss.st.com>
Mon, 16 Jun 2025 09:21:03 +0000 (11:21 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 15 Aug 2025 14:38:29 +0000 (16:38 +0200)
[ Upstream commit 21f1c800f6620e43f31dfd76709dbac8ebaa5a16 ]

The stm32_spi_probe function now includes a check to ensure that the
pointer returned by of_device_get_match_data is not NULL before
accessing its members. This resolves a warning where a potential NULL
pointer dereference could occur when accessing cfg->has_device_mode.

Before accessing the 'has_device_mode' member, we verify that 'cfg' is
not NULL. If 'cfg' is NULL, an error message is logged.

This change ensures that the driver does not attempt to access
configuration data if it is not available, thus preventing a potential
system crash due to a NULL pointer dereference.

Signed-off-by: Clément Le Goffic <clement.legoffic@foss.st.com>
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202310191831.MLwx1c6x-lkp@intel.com/
Fixes: fee681646fc8 ("spi: stm32: disable device mode with st,stm32f4-spi compatible")
Link: https://patch.msgid.link/20250616-spi-upstream-v1-2-7e8593f3f75d@foss.st.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/spi/spi-stm32.c

index da3517d7102dce5f830cdf0dbdee3e19184f69c5..dc22b98bdbcc345c50a16a26f0a982d2590142d1 100644 (file)
@@ -2069,9 +2069,15 @@ static int stm32_spi_probe(struct platform_device *pdev)
        struct resource *res;
        struct reset_control *rst;
        struct device_node *np = pdev->dev.of_node;
+       const struct stm32_spi_cfg *cfg;
        bool device_mode;
        int ret;
-       const struct stm32_spi_cfg *cfg = of_device_get_match_data(&pdev->dev);
+
+       cfg = of_device_get_match_data(&pdev->dev);
+       if (!cfg) {
+               dev_err(&pdev->dev, "Failed to get match data for platform\n");
+               return -ENODEV;
+       }
 
        device_mode = of_property_read_bool(np, "spi-slave");
        if (!cfg->has_device_mode && device_mode) {