| From 2a55270e7a01b3825d30e3b9c8ad0e9ae7e67399 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 17 May 2022 17:57:00 +0800 |
| Subject: drm/radeon: fix a possible null pointer dereference |
| |
| From: Gong Yuanjun <ruc_gongyuanjun@163.com> |
| |
| [ Upstream commit a2b28708b645c5632dc93669ab06e97874c8244f ] |
| |
| In radeon_fp_native_mode(), the return value of drm_mode_duplicate() |
| is assigned to mode, which will lead to a NULL pointer dereference |
| on failure of drm_mode_duplicate(). Add a check to avoid npd. |
| |
| The failure status of drm_cvt_mode() on the other path is checked too. |
| |
| Signed-off-by: Gong Yuanjun <ruc_gongyuanjun@163.com> |
| Signed-off-by: Alex Deucher <alexander.deucher@amd.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/gpu/drm/radeon/radeon_connectors.c | 4 ++++ |
| 1 file changed, 4 insertions(+) |
| |
| diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c |
| index 9e6c2be0cc7d..a759955e3797 100644 |
| --- a/drivers/gpu/drm/radeon/radeon_connectors.c |
| +++ b/drivers/gpu/drm/radeon/radeon_connectors.c |
| @@ -489,6 +489,8 @@ static struct drm_display_mode *radeon_fp_native_mode(struct drm_encoder *encode |
| native_mode->vdisplay != 0 && |
| native_mode->clock != 0) { |
| mode = drm_mode_duplicate(dev, native_mode); |
| + if (!mode) |
| + return NULL; |
| mode->type = DRM_MODE_TYPE_PREFERRED | DRM_MODE_TYPE_DRIVER; |
| drm_mode_set_name(mode); |
| |
| @@ -503,6 +505,8 @@ static struct drm_display_mode *radeon_fp_native_mode(struct drm_encoder *encode |
| * simpler. |
| */ |
| mode = drm_cvt_mode(dev, native_mode->hdisplay, native_mode->vdisplay, 60, true, false, false); |
| + if (!mode) |
| + return NULL; |
| mode->type = DRM_MODE_TYPE_PREFERRED | DRM_MODE_TYPE_DRIVER; |
| DRM_DEBUG_KMS("Adding cvt approximation of native panel mode %s\n", mode->name); |
| } |
| -- |
| 2.35.1 |
| |