Received: by 2002:a05:6520:4d:b0:139:a872:a4c9 with SMTP id i13csp2567192lkm; Mon, 20 Sep 2021 18:54:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxrgqBzR0z5cqDU8mzNYcdaLdAgBPvi32dAQftkCVji+uy2ucFDZD4Yn6BaTsvKMU8MQqvm X-Received: by 2002:a5e:a904:: with SMTP id c4mr1736891iod.14.1632189282353; Mon, 20 Sep 2021 18:54:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632189282; cv=none; d=google.com; s=arc-20160816; b=CTRk4FfTf8TOLI/Zl9nt4107BSk2FT/NIGfL6DtyClGj0RLi6NOnbIqn1LETdQ7Mpg NvIfZgER6Fvdg6U+9j/rCQucA5FlfxmP666UR2nq76FGoEITEfAQnb7nq4d4Y1/rIM8+ KhLs1mQVux914Ze/Sb8mJs10yaLtBxF8Ikj/YBolydBz3kXt8iQDKAMtdHgqLXeKEQQW f4UZRfs7XJhHC2XEXtETNCmLKvVw/CS0E9VRJc1BFVeHy4v2BtOf6SpNnntBtBXRTyL6 90IkzEnc2QT3k9DWZ/e6VXQsrQSs8pUisSqrZ1EImwZVxEqfAOAD5oPu+hCK8gJ29H0v f/1g== 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=BkOcre3ujaK7Ys6bCK2FPmR7S8vqIDVkmi0zeiLzC+3dQaY+ILP2mKXqMsmIPEY9vQ Xk8oQzaz5sW4yWyrgEWJsOBioWJXZ3IffnWAiQuOKEA8jTLJsG9apwbUkEVY7aKMFFUt XA2+M3T+m+75eSAPXzE9y5BX2vdcRLgy7Aj5C9PKU6GWEULfiZpVTTIB9t1dWmT8IOeQ 4t5uNCSz4J8K4VM31sIWFNpkAcMKZKVPQvsul6jpkKd9r5lH3wLulWkW/HDAgcYwRaYf zNreXQzD1O5A9Akh2c9pZ3tkxdNwfbhhy2HrAFzCqhfEltwl+0tuuBrJAWjdjpupKTsD V8tQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=v6ALI5Bl; 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 g14si15783200jat.122.2021.09.20.18.54.31; Mon, 20 Sep 2021 18:54:42 -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=v6ALI5Bl; 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 S1346323AbhITSS6 (ORCPT + 99 others); Mon, 20 Sep 2021 14:18:58 -0400 Received: from mail.kernel.org ([198.145.29.99]:33082 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1358699AbhITSH2 (ORCPT ); Mon, 20 Sep 2021 14:07:28 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 224E263258; Mon, 20 Sep 2021 17:18:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1632158312; bh=d7EUfqwWWpV7h3TBHRCTu2b8IRuzuCKWsO/Z6kfeEZ0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=v6ALI5BlpLHwzIUA3Khivg27bLKIVKxV14N+4SUJ8aNuo+dtR9gdEPpIfuCSRxOPo NykBD+P913zQ+e65OHkhTcEknr3mDHzeU5GSJTOjnd60xZOGkSSowDss8VpG2miBmP O0z3YiiZrAK81mZhKKVElrnx+gMgxDx+qN+78J+k= 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.4 099/260] video: fbdev: kyro: Error out if pixclock equals zero Date: Mon, 20 Sep 2021 18:41:57 +0200 Message-Id: <20210920163934.500015467@linuxfoundation.org> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20210920163931.123590023@linuxfoundation.org> References: <20210920163931.123590023@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