]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
phy: qcom: qmp-usbc: Fix out-of-bounds array access in dp swing config
authorXiangxu Yin <xiangxu.yin@oss.qualcomm.com>
Fri, 27 Feb 2026 12:15:01 +0000 (20:15 +0800)
committerVinod Koul <vkoul@kernel.org>
Tue, 19 May 2026 10:12:11 +0000 (15:42 +0530)
swing_tbl and pre_emphasis_tbl are 4x4 arrays (valid indices 0-3), but
the boundary check uses "> 4" instead of ">= 4", allowing index 4 to
cause an out-of-bounds access.

Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Fixes: 81791c45c8e0 ("phy: qcom: qmp-usbc: Add QCS615 USB/DP PHY config and DP mode support")
Signed-off-by: Xiangxu Yin <xiangxu.yin@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://patch.msgid.link/20260227-master-v1-1-8d91b9407fdb@oss.qualcomm.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/qualcomm/phy-qcom-qmp-usbc.c

index c342479a3798007349e7e3039b7e1a2c6ce9e021..dff27d30fc99ac1986ec872819adc1063d384470 100644 (file)
@@ -794,7 +794,7 @@ static int qmp_v2_configure_dp_swing(struct qmp_usbc *qmp)
                p_level = max(p_level, dp_opts->pre[i]);
        }
 
-       if (v_level > 4 || p_level > 4) {
+       if (v_level >= 4 || p_level >= 4) {
                dev_err(qmp->dev, "Invalid v(%d) | p(%d) level)\n",
                        v_level, p_level);
                return -EINVAL;