mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 09:36:22 +02:00
drm/sysfb: Avoid possible truncation with calculating visible size
Calculating the visible size of the system framebuffer can result in truncation of the result. The calculation uses 32-bit arithmetics, which can overflow if the values for height and stride are large. Fix the issue by multiplying with mul_u32_u32(). Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Fixes:32ae90c66f("drm/sysfb: Add efidrm for EFI displays") Fixes:a84eb6abe2("drm/sysfb: Add vesadrm for VESA displays") Reported-by: Sashiko <sashiko-bot@kernel.org> Closes: https://lore.kernel.org/dri-devel/20260617114027.1F2A71F000E9@smtp.kernel.org/ Cc: Thomas Zimmermann <tzimmermann@suse.de> Cc: Javier Martinez Canillas <javierm@redhat.com> Cc: dri-devel@lists.freedesktop.org Cc: <stable@vger.kernel.org> # v6.16+ Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> Link: https://patch.msgid.link/20260618084327.46567-3-tzimmermann@suse.de
This commit is contained in:
parent
134844856c
commit
b771974988
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include <linux/export.h>
|
||||
#include <linux/limits.h>
|
||||
#include <linux/math64.h>
|
||||
#include <linux/minmax.h>
|
||||
#include <linux/screen_info.h>
|
||||
|
||||
|
|
@ -67,7 +68,7 @@ EXPORT_SYMBOL(drm_sysfb_get_stride_si);
|
|||
u64 drm_sysfb_get_visible_size_si(struct drm_device *dev, const struct screen_info *si,
|
||||
unsigned int height, unsigned int stride, u64 size)
|
||||
{
|
||||
u64 vsize = height * stride;
|
||||
u64 vsize = mul_u32_u32(height, stride);
|
||||
|
||||
return drm_sysfb_get_validated_size0(dev, "visible size", vsize, size);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user