Received: by 2002:a05:6520:4d:b0:139:a872:a4c9 with SMTP id i13csp2563707lkm; Mon, 20 Sep 2021 18:49:25 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyFj721ygs3c4PnZrI+eGVq6VuTu/JIcRBvN/8G25z4mbLTF3TvY7FFl53OS3f9jtOP8RUd X-Received: by 2002:a05:6e02:1305:: with SMTP id g5mr19741465ilr.9.1632188964995; Mon, 20 Sep 2021 18:49:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632188964; cv=none; d=google.com; s=arc-20160816; b=JamT4DiRb5vL9YaUyKdEvXzrBk72+qUIDpnngNTQtmwNDYvyYV6J96B6bamB2X7JeU gcf9MIlo4Lgtkm9DiIVk1m4zqbSe7bPgx9N9Tk8uT7ZU80/GFabkAH0zfgxI54qdAd6w njk+l4hEuVpk/gaBCanHRgHMnGL8HAzsJBNp80ig33WpjLQ5M19m4y6CPc8i+R3P5WND J5lGBMbmYcfqTbnTK0b6hUQsBpK6vVRB5P5bKelauXFK0b2MRmlcoD+X6woykw8TB5ip 9EeR8I/G43zQswNcUD8glq9FC400lIjobrO1ZvF0Z7W6XNTzMfaq//J7uFwhciX1RjYQ pelA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=VrSsOjQSB3X6O7FY8uwsXo4jiHwUm/j8ycGbH6Aogv4=; b=PE0XkP+wYd9dlISV3WX4Mj+SbGqpbwhpldQ3epRytFDX0CZd0SCn8eZ9DCCHom+fsr PmCj0tq62BW1M5YToAb84co8rORpJ9tSjR+dcPddngZlHlFlWhbFDPnGl7QhvVLe1h1C daQZ3VXmKhHICXG5wgOzSXQxBX8S/rh4b7hBeCsgZbhkYgINW5Era5y9FFBoRRhjnnmb XUfqztvIQpn3c83h/TrkXCvN1GGzJ/cJ+K34qffen+Z/C/hxCSjQqQSvyZQiMm893qxr BlWQMRNE+hwBlGeSsCUI+dsFlJd/Ip0dcgPNkcdVbYVDePRmBtajQwd9UEOMxbHI/2ep 3zCQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Gcj0OcjG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f44si3790922jaa.36.2021.09.20.18.49.14; Mon, 20 Sep 2021 18:49:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Gcj0OcjG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1355408AbhITRyr (ORCPT + 99 others); Mon, 20 Sep 2021 13:54:47 -0400 Received: from mail.kernel.org ([198.145.29.99]:52808 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354096AbhITRsx (ORCPT ); Mon, 20 Sep 2021 13:48:53 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 5148461BC0; Mon, 20 Sep 2021 17:11:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1632157872; bh=d7EUfqwWWpV7h3TBHRCTu2b8IRuzuCKWsO/Z6kfeEZ0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Gcj0OcjGgtGwlm/Dfec7rs4ijRJIizitZPwTOobSpPQkzoBiV5RHRMAg2BaBwQZO9 zGd2bvMMD8WcdwA0+ViXQ7sabUPLO6vM/bUlCbn+PE2g7CmTxDPNTXmAedT19lG9Iu UNetwJsUoneYCwAkwudfIpvQlElDSrKy3xUZpcQs= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Zheyu Ma , Sam Ravnborg , Sasha Levin Subject: [PATCH 4.19 191/293] video: fbdev: kyro: Error out if pixclock equals zero Date: Mon, 20 Sep 2021 18:42:33 +0200 Message-Id: <20210920163939.807428218@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210920163933.258815435@linuxfoundation.org> References: <20210920163933.258815435@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Zheyu Ma [ Upstream commit 1520b4b7ba964f8eec2e7dd14c571d50de3e5191 ] The userspace program could pass any values to the driver through ioctl() interface. if the driver doesn't check the value of 'pixclock', it may cause divide error because the value of 'lineclock' and 'frameclock' will be zero. Fix this by checking whether 'pixclock' is zero in kyrofb_check_var(). The following log reveals it: [ 103.073930] divide error: 0000 [#1] PREEMPT SMP KASAN PTI [ 103.073942] CPU: 4 PID: 12483 Comm: syz-executor Not tainted 5.14.0-rc2-00478-g2734d6c1b1a0-dirty #118 [ 103.073959] RIP: 0010:kyrofb_set_par+0x316/0xc80 [ 103.074045] Call Trace: [ 103.074048] ? ___might_sleep+0x1ee/0x2d0 [ 103.074060] ? kyrofb_ioctl+0x330/0x330 [ 103.074069] fb_set_var+0x5bf/0xeb0 [ 103.074078] ? fb_blank+0x1a0/0x1a0 [ 103.074085] ? lock_acquire+0x3bd/0x530 [ 103.074094] ? lock_release+0x810/0x810 [ 103.074103] ? ___might_sleep+0x1ee/0x2d0 [ 103.074114] ? __mutex_lock+0x620/0x1190 [ 103.074126] ? trace_hardirqs_on+0x6a/0x1c0 [ 103.074137] do_fb_ioctl+0x31e/0x700 [ 103.074144] ? fb_getput_cmap+0x280/0x280 [ 103.074152] ? rcu_read_lock_sched_held+0x11/0x80 [ 103.074162] ? rcu_read_lock_sched_held+0x11/0x80 [ 103.074171] ? __sanitizer_cov_trace_switch+0x67/0xf0 [ 103.074181] ? __sanitizer_cov_trace_const_cmp2+0x20/0x80 [ 103.074191] ? do_vfs_ioctl+0x14b/0x16c0 [ 103.074199] ? vfs_fileattr_set+0xb60/0xb60 [ 103.074207] ? rcu_read_lock_sched_held+0x11/0x80 [ 103.074216] ? lock_release+0x483/0x810 [ 103.074224] ? __fget_files+0x217/0x3d0 [ 103.074234] ? __fget_files+0x239/0x3d0 [ 103.074243] ? do_fb_ioctl+0x700/0x700 [ 103.074250] fb_ioctl+0xe6/0x130 Signed-off-by: Zheyu Ma Signed-off-by: Sam Ravnborg Link: https://patchwork.freedesktop.org/patch/msgid/1627293835-17441-3-git-send-email-zheyuma97@gmail.com Signed-off-by: Sasha Levin --- drivers/video/fbdev/kyro/fbdev.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/video/fbdev/kyro/fbdev.c b/drivers/video/fbdev/kyro/fbdev.c index d7aa431e6846..74bf26b527b9 100644 --- a/drivers/video/fbdev/kyro/fbdev.c +++ b/drivers/video/fbdev/kyro/fbdev.c @@ -399,6 +399,9 @@ static int kyrofb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) { struct kyrofb_info *par = info->par; + if (!var->pixclock) + return -EINVAL; + if (var->bits_per_pixel != 16 && var->bits_per_pixel != 32) { printk(KERN_WARNING "kyrofb: depth not supported: %u\n", var->bits_per_pixel); return -EINVAL; -- 2.30.2