[PATCH] drm/panel: fix null pointer dereference in hx83102_get_modes

From: Charles Han
Date: Thu Aug 22 2024 - 05:35:05 EST


In hx83102_get_modes(), the return value of drm_mode_duplicate()
is assigned to mode, which will lead to a possible NULL
pointer dereference on failure of drm_mode_duplicate(). Add a
check to avoid npd.

Fixes: 0ef94554dc40 ("drm/panel: himax-hx83102: Break out as separate driver")

Signed-off-by: Charles Han <hanchunchao@xxxxxxxxxx>
---
drivers/gpu/drm/panel/panel-himax-hx83102.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/panel/panel-himax-hx83102.c b/drivers/gpu/drm/panel/panel-himax-hx83102.c
index 6e4b7e4644ce..7c2a5e9b7fb3 100644
--- a/drivers/gpu/drm/panel/panel-himax-hx83102.c
+++ b/drivers/gpu/drm/panel/panel-himax-hx83102.c
@@ -565,6 +565,10 @@ static int hx83102_get_modes(struct drm_panel *panel,
struct drm_display_mode *mode;

mode = drm_mode_duplicate(connector->dev, m);
+ if (!mode) {
+ dev_err(&ctx->dsi->dev, "bad mode or failed to add mode\n");
+ return -EINVAL;
+ }

mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED;
drm_mode_set_name(mode);
--
2.31.1