Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp1557053pxb; Thu, 16 Sep 2021 09:51:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzNjaTpYZiBly1QZsAqbvLTY9Qy61vaEJ0jAIlGmQJvYkEwWqS4EX5XVf9t8xMSSxN0B4fV X-Received: by 2002:a17:906:318b:: with SMTP id 11mr7671949ejy.493.1631811099515; Thu, 16 Sep 2021 09:51:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631811099; cv=none; d=google.com; s=arc-20160816; b=QiraA1SpRsBBQFAX7hDngsPizoBfo9L21bjoI5w3VfDJL+CR8Q7XVho4Xf9Pi5OKQ/ uk8oOddsWjnSY7yFRYPuHHiCn4LH1Q60xP4CSlpCzR3CLKbgE68gN/uiyZFlddI9GZFZ CiDwJsBtvn49aWVE3QVxo5wwREjSXl7ysg8aZhxMcDjL3WFtJC8zfFxwTKH3bWyLECe+ PHCnzREmWBCsF5P0HR3DuD++Ys8OHXmzXCfnyUMfR0+pAsigOcL79g377Q/9dYSk0j3o 9aUmR1YDopaCk3uA5En+WE8oOvHd78eJAOdjquur8ov73rSXBUXsxEUv2aPXq2uuyLXN IBSA== 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=7FSXfzZcT3mslVZBeHdGG2cuU4yHFOev/tp5sXFXYx4=; b=jbU43J6Peoi9c6PH51RZTPj0D9R9de7AnH1UfW4leZPDXwhIbKN8gpTIcD1eNWY9io LkRGWMl+mTlW1X3Zx6i2DtAzMuL9Ty+/fUPEoWIWLCgx3ODfQlHjMP9AXsvQgrWxDyzY SV5L0TV5I1hnlgafYef+Z/75avqPw9hVFSll/Xw70ZjPLHN4BiElVvdzLaNa773lRU7Z m9kCzpksDlCOoedpOVPwj1mGmYm5b/8oNilFcGXAgrXQaTrvdK/IcSc/isBejJmHxG1H BjQ06e+rB3wHZ+CBtb2CmAf6RqjT3zTVe4Wu14bs72nDfquK1o/Sy/14czHR96eTSF3B pplA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=UIWp26r7; 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 g3si3899725edw.18.2021.09.16.09.51.14; Thu, 16 Sep 2021 09:51:39 -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=UIWp26r7; 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 S1345219AbhIPQts (ORCPT + 99 others); Thu, 16 Sep 2021 12:49:48 -0400 Received: from mail.kernel.org ([198.145.29.99]:57770 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344196AbhIPQov (ORCPT ); Thu, 16 Sep 2021 12:44:51 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id E18EB613CE; Thu, 16 Sep 2021 16:25:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1631809553; bh=M/TrmTe3ciJOP0PBC3RLTmAUzusLs0iiYOrZz9bKWK0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=UIWp26r7mPsmvBcy/MWYYGU2K7h6MBuoaY+yxa0bDwlLots51AWmOMRT0IyYFSlsC JpUkk7fsQIEPOqBmyxUOWDUZyI1h6hNJKTq56Tbnyozx294zG0QSCluZckEJlW6EUB W0gffIffYFirnELtcZNx/uY+vruia4Owfj3oqxq4= 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 5.13 196/380] video: fbdev: kyro: Error out if pixclock equals zero Date: Thu, 16 Sep 2021 17:59:13 +0200 Message-Id: <20210916155810.748096642@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210916155803.966362085@linuxfoundation.org> References: <20210916155803.966362085@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 4b8c7c16b1df..25801e8e3f74 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