| From 9a04ce0c203db9341ca2f28c0075e49dd73bcaee Mon Sep 17 00:00:00 2001 | |
| From: Sasha Levin <sashal@kernel.org> | |
| Date: Sat, 12 Sep 2026 11:39:50 -0400 | |
| Subject: drm/sysfb: simpledrm: Improve stride validation | |
| From: Thomas Zimmermann <tzimmermann@suse.de> | |
| [ Upstream commit df6533f11688aa30be3bb883c7637f4ffdbb7cbd ] | |
| Validate the computed stride against the maximum value INT_MAX. | |
| Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> | |
| Reviewed-by: Thierry Reding <treding@nvidia.com> | |
| Reviewed-by: Maxime Ripard <mripard@kernel.org> | |
| Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> | |
| Fixes: 7bfa5c7b28d6 ("drm/simpledrm: Compute linestride with drm_format_info_min_pitch()") | |
| Cc: <stable@vger.kernel.org> # v6.1+ | |
| Link: https://patch.msgid.link/20260625094509.157581-5-tzimmermann@suse.de | |
| Signed-off-by: Sasha Levin <sashal@kernel.org> | |
| --- | |
| drivers/gpu/drm/tiny/simpledrm.c | 10 ++++++++-- | |
| 1 file changed, 8 insertions(+), 2 deletions(-) | |
| diff --git a/drivers/gpu/drm/tiny/simpledrm.c b/drivers/gpu/drm/tiny/simpledrm.c | |
| index 18489779fb8aa..4b5ccbb13ecfe 100644 | |
| --- a/drivers/gpu/drm/tiny/simpledrm.c | |
| +++ b/drivers/gpu/drm/tiny/simpledrm.c | |
| @@ -693,9 +693,15 @@ static struct simpledrm_device *simpledrm_device_create(struct drm_driver *drv, | |
| return ERR_PTR(-ENODEV); | |
| } | |
| if (!stride) { | |
| - stride = drm_format_info_min_pitch(format, 0, width); | |
| - if (drm_WARN_ON(dev, !stride)) | |
| + u64 pitch = drm_format_info_min_pitch(format, 0, width); | |
| + | |
| + if (drm_WARN_ON(dev, !pitch)) { | |
| + return ERR_PTR(-EINVAL); /* driver bug */ | |
| + } else if (pitch > INT_MAX) { | |
| + drm_warn(dev, "stride of %llu exceeds maximum\n", pitch); | |
| return ERR_PTR(-EINVAL); | |
| + } | |
| + stride = pitch; | |
| } | |
| sdev->mode = simpledrm_mode(width, height); | |
| -- | |
| 2.53.0 | |