Messages in this thread Patch in this message | | | Date | Sat, 18 Nov 2023 17:31:24 -0800 | Subject | Re: [syzbot] [PATCH] Test divide err in drm | From | syzbot <> |
| |
For archival purposes, forwarding an incoming command email to linux-kernel@vger.kernel.org.
***
Subject: [PATCH] Test divide err in drm Author: eadavis@qq.com
please test divide err in drm
#syz test https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git ac347a0655db
diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c index ac9a406250c5..1a3e8f3c1ece 100644 --- a/drivers/gpu/drm/drm_modes.c +++ b/drivers/gpu/drm/drm_modes.c @@ -36,6 +36,7 @@ #include <linux/list.h> #include <linux/list_sort.h> #include <linux/of.h> +#include <linux/log2.h> #include <video/of_display_timing.h> #include <video/of_videomode.h> @@ -1297,8 +1298,12 @@ int drm_mode_vrefresh(const struct drm_display_mode *mode) num *= 2; if (mode->flags & DRM_MODE_FLAG_DBLSCAN) den *= 2; - if (mode->vscan > 1) + if (mode->vscan > 1) { + printk("%d, %d, %s\n", ilog2(den), ilog2(mode->vscan), __func__); + if (ilog2(den) + ilog2(mode->vscan) >= 32) + return -EINVAL; den *= mode->vscan; + } return DIV_ROUND_CLOSEST_ULL(mul_u32_u32(num, 1000), den); }
| |