Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp1949506pxb; Thu, 16 Sep 2021 21:16:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwKKFyBWlQiYFVvtmtOk3Kn+0G/22QV9iTJr9I/lFIVS9yvrrWusu5zAbnz62Mf9hiXXwia X-Received: by 2002:a05:6e02:1088:: with SMTP id r8mr6392515ilj.46.1631852166814; Thu, 16 Sep 2021 21:16:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631852166; cv=none; d=google.com; s=arc-20160816; b=TtkYBJw4VTXnC+/voJhb4tP0z0CIh8XFiJHY/JCitRY3n1Q5DdAjhgVRpNE0O/vF2e 2eZ/ad9IzMOckWX9mgjZ3CQjaNzTYC2c8hD5+UREWBgdMPbVe/QDGh0L4fxf291+ZdRn sVOyQsWNWY9540Z+DFkVA9Uly2NUfJjhds+WmYSPkYf4B7rtlydktosZhwF00Sn8ialc pFBbsmagLaiS5HTHCuT7m3R7eACb2ODo4PWfSgeJxqGV0yub7a9iK8J40RRjY6BvY2j+ tNFITzTDOSWs7866sQSHxW1HO1EEjqYNAOfOy7xjLH4kzWFge/Rm58TlWyvETXe7MrWQ O81g== 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=xbquwtngtpeT5CWY1CcLa1Wt9QxOyk19tVx4j+ZrzSXk0daUxJrztWMINIaTxlfDTt vHaMXhsioJY3LrLCIQjprGAKb0vMZG4KZE018im/vZg8x5izcMwTQ4mWYl9Y5rSpymJO /FEQQsC4cAI2AJ7XGetkOJzPk2RqtJxeCU6wPgsv6FJBp26H9iGHYqBXzngsj2/9+Gch BecKOFij1JEs/xQR5uQLNGyCoUbk0q0AWhyV0zTXP0ljOiBVT17VNzcN7RW0RTXWpzX1 AiSAeYAssFgT3O6Xdn4s0qPSGzZbOVEv0dzH2t+8FJK0DM/cg6utguKmMx4gDqtNM5Gj yBng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="lRp06/s+"; 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 o7si4768369ilj.101.2021.09.16.21.15.53; Thu, 16 Sep 2021 21:16:06 -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="lRp06/s+"; 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 S1353761AbhIPRfB (ORCPT + 99 others); Thu, 16 Sep 2021 13:35:01 -0400 Received: from mail.kernel.org ([198.145.29.99]:46940 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1348331AbhIPRZz (ORCPT ); Thu, 16 Sep 2021 13:25:55 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 28DA261BFE; Thu, 16 Sep 2021 16:44:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1631810657; bh=M/TrmTe3ciJOP0PBC3RLTmAUzusLs0iiYOrZz9bKWK0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lRp06/s+ASJF2cX0XY6yd6uvhMeHCGqsmMV0ec+NOlQDLpm9if1Tw4gFtcyRSKKtA Tu2sUcGSFuciBNMGPBEBrDjrd98Sdcnxim3NXYagwYWDledjnpbk66qmwJTWtwdq2V K5sMc1EVtrrDqdVONLpiAyaerH7cc9w/9rx9gdiw= 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.14 221/432] video: fbdev: kyro: Error out if pixclock equals zero Date: Thu, 16 Sep 2021 17:59:30 +0200 Message-Id: <20210916155818.336914837@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210916155810.813340753@linuxfoundation.org> References: <20210916155810.813340753@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