Received: by 2002:a05:6a11:4021:0:0:0:0 with SMTP id ky33csp1535622pxb; Thu, 16 Sep 2021 09:25:45 -0700 (PDT) X-Google-Smtp-Source: ABdhPJySugoJk3Kn78D3ApotFKUp2vjNbA4tsKzXjm/7HmwtCmQVPbnLd85dhaJqxUvJmqJpkads X-Received: by 2002:aa7:db15:: with SMTP id t21mr7254633eds.229.1631809545024; Thu, 16 Sep 2021 09:25:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631809545; cv=none; d=google.com; s=arc-20160816; b=dXgHNx5pEEbK8OiM/f6LoC71LUzkinEp2nFd4Kv2IHonbABdUCN/K5fs9pIo8l6fXw 2v2JrQONbRaPlrPsS41k6imiVdL4Yr4McOIaatnSR6QiIwQrX9z/8Ccx/BP8ScSdmDSN NSHpAHDQpaCujSD8Fi8siO1pZmVU3lIE/0eYc+e3hYBjueDg3LdvFfah5arNi1zCCM+V 2uZjWC25yzmd7fEQiWlJHIijDI2RMepHVH8E89mynyf3JJxIXOzS3wshN0K7A29eGaeZ Fd8f0JACQp/mK5Ntc6uN/6JBF+mSQE63OuecCvp0xUPyTX9J8/A0pri/ab1LEvFd3ozN 2ZDw== 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=R/5wN3KrJThLswixIQf6RGhQ67FeNvtyeUofszwzhxR2UWa06jnvBMWHi5M353joKa DL8QrjeagajlCQKOU/p8FqgQSro+z+AsijuY9oC9zT+4bMJBcMoJdCLY7nQ2LhAd/tcP S43yRhidpHAjuWJfrEUqYDRf70oYzR4v5Tl9ZrtBpDwNWfY8F58MVd1/NVbB5G6FxtIv yJlmMnaOTvxEz+6jVFkQc1yANYDRRzO7A7jtiIzN+tilI7zYyx9tWUqYuQ4Cosqk1vo2 IefB/pV5RnXSLmsHpj6eLPNPXoeSnLYAJnRzhFFJDqTllIelTUPcG9YnEZwap0iu4SFz gQpg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="1MPob1/g"; 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 de4si3792091ejc.615.2021.09.16.09.25.15; Thu, 16 Sep 2021 09:25:45 -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="1MPob1/g"; 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 S235322AbhIPQWW (ORCPT + 99 others); Thu, 16 Sep 2021 12:22:22 -0400 Received: from mail.kernel.org ([198.145.29.99]:49222 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235781AbhIPQNp (ORCPT ); Thu, 16 Sep 2021 12:13:45 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id E1E8A613A0; Thu, 16 Sep 2021 16:10:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1631808604; bh=M/TrmTe3ciJOP0PBC3RLTmAUzusLs0iiYOrZz9bKWK0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=1MPob1/ghBIGhOH/IiL70eaqSuzxHwKU9ySGxh4XE8el7a8J36F6wsfPJASS3XzvZ /uX3b1PAmdvxq9W6BKxz8wESW4+50t4/2HkX1fR4c9u1OphzufNc//3/STNKSXLL4p 4/qqAiWKjYBG+X4bFBw8tHldFnS/sFW+FesZJxsg= 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.10 155/306] video: fbdev: kyro: Error out if pixclock equals zero Date: Thu, 16 Sep 2021 17:58:20 +0200 Message-Id: <20210916155759.370782415@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210916155753.903069397@linuxfoundation.org> References: <20210916155753.903069397@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