Skip to content

Commit 236c150

Browse files
ZheyuMagregkh
authored andcommitted
video: fbdev: arkfb: Fix a divide-by-zero bug in ark_set_pixclock()
[ Upstream commit 2f1c452 ] Since the user can control the arguments of the ioctl() from the user space, under special arguments that may result in a divide-by-zero bug in: drivers/video/fbdev/arkfb.c:784: ark_set_pixclock(info, (hdiv * info->var.pixclock) / hmul); with hdiv=1, pixclock=1 and hmul=2 you end up with (1*1)/2 = (int) 0. and then in: drivers/video/fbdev/arkfb.c:504: rv = dac_set_freq(par->dac, 0, 1000000000 / pixclock); we'll get a division-by-zero. The following log can reveal it: divide error: 0000 [#1] PREEMPT SMP KASAN PTI RIP: 0010:ark_set_pixclock drivers/video/fbdev/arkfb.c:504 [inline] RIP: 0010:arkfb_set_par+0x10fc/0x24c0 drivers/video/fbdev/arkfb.c:784 Call Trace: fb_set_var+0x604/0xeb0 drivers/video/fbdev/core/fbmem.c:1034 do_fb_ioctl+0x234/0x670 drivers/video/fbdev/core/fbmem.c:1110 fb_ioctl+0xdd/0x130 drivers/video/fbdev/core/fbmem.c:1189 Fix this by checking the argument of ark_set_pixclock() first. Fixes: 681e147 ("arkfb: new framebuffer driver for ARK Logic cards") Signed-off-by: Zheyu Ma <[email protected]> Signed-off-by: Helge Deller <[email protected]> Signed-off-by: Sasha Levin <[email protected]>
1 parent 3bb94ff commit 236c150

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

drivers/video/fbdev/arkfb.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -778,7 +778,12 @@ static int arkfb_set_par(struct fb_info *info)
778778
return -EINVAL;
779779
}
780780

781-
ark_set_pixclock(info, (hdiv * info->var.pixclock) / hmul);
781+
value = (hdiv * info->var.pixclock) / hmul;
782+
if (!value) {
783+
fb_dbg(info, "invalid pixclock\n");
784+
value = 1;
785+
}
786+
ark_set_pixclock(info, value);
782787
svga_set_timings(par->state.vgabase, &ark_timing_regs, &(info->var), hmul, hdiv,
783788
(info->var.vmode & FB_VMODE_DOUBLE) ? 2 : 1,
784789
(info->var.vmode & FB_VMODE_INTERLACED) ? 2 : 1,

0 commit comments

Comments
 (0)