thermal/drivers/tsens: Fix null pointer dereference
authorAleksandr Mishin <amishin@t-argos.ru>
Thu, 11 Apr 2024 11:40:21 +0000 (14:40 +0300)
committerDaniel Lezcano <daniel.lezcano@linaro.org>
Tue, 23 Apr 2024 10:40:29 +0000 (12:40 +0200)
compute_intercept_slope() is called from calibrate_8960() (in tsens-8960.c)
as compute_intercept_slope(priv, p1, NULL, ONE_PT_CALIB) which lead to null
pointer dereference (if DEBUG or DYNAMIC_DEBUG set).
Fix this bug by adding null pointer check.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: dfc1193d4dbd ("thermal/drivers/tsens: Replace custom 8960 apis with generic apis")
Signed-off-by: Aleksandr Mishin <amishin@t-argos.ru>
Reviewed-by: Konrad Dybcio <konrad.dybcio@linaro.org>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Link: https://lore.kernel.org/r/20240411114021.12203-1-amishin@t-argos.ru
drivers/thermal/qcom/tsens.c

index 1c9df4f84641109c527e274b34efb4c17121dd34..e76e23026dc807e8cdba5ca7e8d2349b0bd2e415 100644 (file)
@@ -265,7 +265,7 @@ void compute_intercept_slope(struct tsens_priv *priv, u32 *p1,
        for (i = 0; i < priv->num_sensors; i++) {
                dev_dbg(priv->dev,
                        "%s: sensor%d - data_point1:%#x data_point2:%#x\n",
-                       __func__, i, p1[i], p2[i]);
+                       __func__, i, p1[i], p2 ? p2[i] : 0);
 
                if (!priv->sensor[i].slope)
                        priv->sensor[i].slope = SLOPE_DEFAULT;