drm/mediatek: dp: drm_err => dev_err in HPD path to avoid NULL ptr
authorDouglas Anderson <dianders@chromium.org>
Thu, 16 Jan 2025 17:42:50 +0000 (09:42 -0800)
committerChun-Kuang Hu <chunkuang.hu@kernel.org>
Wed, 12 Mar 2025 23:17:22 +0000 (23:17 +0000)
The function mtk_dp_wait_hpd_asserted() may be called before the
`mtk_dp->drm_dev` pointer is assigned in mtk_dp_bridge_attach().
Specifically it can be called via this callpath:
 - mtk_edp_wait_hpd_asserted
 - [panel probe]
 - dp_aux_ep_probe

Using "drm" level prints anywhere in this callpath causes a NULL
pointer dereference. Change the error message directly in
mtk_dp_wait_hpd_asserted() to dev_err() to avoid this. Also change the
error messages in mtk_dp_parse_capabilities(), which is called by
mtk_dp_wait_hpd_asserted().

While touching these prints, also add the error code to them to make
future debugging easier.

Fixes: 7eacba9a083b ("drm/mediatek: dp: Add .wait_hpd_asserted() for AUX bus")
Signed-off-by: Douglas Anderson <dianders@chromium.org>
Reviewed-by: CK Hu <ck.hu@mediatek.com>
Link: https://patchwork.kernel.org/project/dri-devel/patch/20250116094249.1.I29b0b621abb613ddc70ab4996426a3909e1aa75f@changeid/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
drivers/gpu/drm/mediatek/mtk_dp.c

index cd385ba4c66aaad8649fa0c138273489ced5e39b..d2cf09124d1085675f9626187da5f102bf6a6134 100644 (file)
@@ -1766,7 +1766,7 @@ static int mtk_dp_parse_capabilities(struct mtk_dp *mtk_dp)
 
        ret = drm_dp_dpcd_readb(&mtk_dp->aux, DP_MSTM_CAP, &val);
        if (ret < 1) {
-               drm_err(mtk_dp->drm_dev, "Read mstm cap failed\n");
+               dev_err(mtk_dp->dev, "Read mstm cap failed: %zd\n", ret);
                return ret == 0 ? -EIO : ret;
        }
 
@@ -1776,7 +1776,7 @@ static int mtk_dp_parse_capabilities(struct mtk_dp *mtk_dp)
                                        DP_DEVICE_SERVICE_IRQ_VECTOR_ESI0,
                                        &val);
                if (ret < 1) {
-                       drm_err(mtk_dp->drm_dev, "Read irq vector failed\n");
+                       dev_err(mtk_dp->dev, "Read irq vector failed: %zd\n", ret);
                        return ret == 0 ? -EIO : ret;
                }
 
@@ -2059,7 +2059,7 @@ static int mtk_dp_wait_hpd_asserted(struct drm_dp_aux *mtk_aux, unsigned long wa
 
        ret = mtk_dp_parse_capabilities(mtk_dp);
        if (ret) {
-               drm_err(mtk_dp->drm_dev, "Can't parse capabilities\n");
+               dev_err(mtk_dp->dev, "Can't parse capabilities: %d\n", ret);
                return ret;
        }