]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
phy: stm32-usphyc: Fix off by one in probe()
authorDan Carpenter <dan.carpenter@linaro.org>
Tue, 9 Dec 2025 06:53:36 +0000 (09:53 +0300)
committerVinod Koul <vkoul@kernel.org>
Tue, 23 Dec 2025 16:23:45 +0000 (21:53 +0530)
The "index" variable is used as an index into the usbphyc->phys[] array
which has usbphyc->nphys elements.  So if it is equal to usbphyc->nphys
then it is one element out of bounds.  The "index" comes from the
device tree so it's data that we trust and it's unlikely to be wrong,
however it's obviously still worth fixing the bug.  Change the > to >=.

Fixes: 94c358da3a05 ("phy: stm32: add support for STM32 USB PHY Controller (USBPHYC)")
Signed-off-by: Dan Carpenter <dan.carpenter@linaro.org>
Reviewed-by: Amelie Delaunay <amelie.delaunay@foss.st.com>
Link: https://patch.msgid.link/aTfHcMJK1wFVnvEe@stanley.mountain
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/st/phy-stm32-usbphyc.c

index 27fe92f73f3313a0a08c02ea9447e17212055b51..b44afbff8616badd097ecc09bd8a7fc1910e4b5e 100644 (file)
@@ -712,7 +712,7 @@ static int stm32_usbphyc_probe(struct platform_device *pdev)
                }
 
                ret = of_property_read_u32(child, "reg", &index);
-               if (ret || index > usbphyc->nphys) {
+               if (ret || index >= usbphyc->nphys) {
                        dev_err(&phy->dev, "invalid reg property: %d\n", ret);
                        if (!ret)
                                ret = -EINVAL;