Message ID | 20230315092254.1042615-1-harperchen1110@gmail.com |
---|---|
State | New |
Headers | show |
Series | fbdev: au1200fb: Fix potential divide by zero | expand |
Dear Thomas, Thank you for the kind advice. In fact, I notice there was a discussion regarding whether to put the check in each individual driver or solve this problem as a whole as you suggested. The conclusion is that it is better to keep the check per driver rather than in the caller. Related discussions are here: https://lore.kernel.org/all/YXclZQGFTr1NFjbc@ravnborg.org/ https://lore.kernel.org/all/YPgbHMtLQqb1kP0l@ravnborg.org/ https://lore.kernel.org/all/20220404084723.79089-1-zheyuma97@gmail.com/ Thanks, Wei ------ Original Message ------
diff --git a/drivers/video/fbdev/au1200fb.c b/drivers/video/fbdev/au1200fb.c index 81c315454428..b6b22fa4a8a0 100644 --- a/drivers/video/fbdev/au1200fb.c +++ b/drivers/video/fbdev/au1200fb.c @@ -1040,6 +1040,9 @@ static int au1200fb_fb_check_var(struct fb_var_screeninfo *var, u32 pixclock; int screen_size, plane; + if (!var->pixclock) + return -EINVAL; + plane = fbdev->plane; /* Make sure that the mode respect all LCD controller and
var->pixclock can be assigned to zero by user. Without proper check, divide by zero would occur when invoking macro PICOS2KHZ in au1200fb_fb_check_var. Error out if var->pixclock is zero. Signed-off-by: Wei Chen <harperchen1110@gmail.com> --- drivers/video/fbdev/au1200fb.c | 3 +++ 1 file changed, 3 insertions(+)