[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1635188490-15082-1-git-send-email-george.kennedy@oracle.com>
Date: Mon, 25 Oct 2021 14:01:30 -0500
From: George Kennedy <george.kennedy@...cle.com>
To: gregkh@...uxfoundation.org, tzimmermann@...e.de, sam@...nborg.org
Cc: george.kennedy@...cle.com, dri-devel@...ts.freedesktop.org,
linux-fbdev@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: [PATCH] video: fbdev: cirrusfb: check pixclock to avoid divide by zero
Do a sanity check on pixclock value before using it as a divisor.
Syzkaller reported a divide error in cirrusfb_check_pixclock.
divide error: 0000 [#1] SMP KASAN PTI
CPU: 0 PID: 14938 Comm: cirrusfb_test Not tainted 5.15.0-rc6 #1
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.11.0-2
RIP: 0010:cirrusfb_check_var+0x6f1/0x1260
Call Trace:
fb_set_var+0x398/0xf90
do_fb_ioctl+0x4b8/0x6f0
fb_ioctl+0xeb/0x130
__x64_sys_ioctl+0x19d/0x220
do_syscall_64+0x3a/0x80
entry_SYSCALL_64_after_hwframe+0x44/0xae
Signed-off-by: George Kennedy <george.kennedy@...cle.com>
---
drivers/video/fbdev/cirrusfb.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/video/fbdev/cirrusfb.c b/drivers/video/fbdev/cirrusfb.c
index 93802ab..099ddcb 100644
--- a/drivers/video/fbdev/cirrusfb.c
+++ b/drivers/video/fbdev/cirrusfb.c
@@ -477,6 +477,9 @@ static int cirrusfb_check_pixclock(const struct fb_var_screeninfo *var,
struct cirrusfb_info *cinfo = info->par;
unsigned maxclockidx = var->bits_per_pixel >> 3;
+ if (!var->pixclock)
+ return -EINVAL;
+
/* convert from ps to kHz */
freq = PICOS2KHZ(var->pixclock);
--
1.8.3.1
Powered by blists - more mailing lists