Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp5981686ybc; Wed, 27 Nov 2019 12:51:09 -0800 (PST) X-Google-Smtp-Source: APXvYqwRbpD8ygtSuigAB8crHSlV4ETtmuHS0NS71kqyC9yK+TG482z46l4m1CWJ2E/4/ZiaChVb X-Received: by 2002:a05:6402:17c5:: with SMTP id s5mr28930031edy.276.1574887869659; Wed, 27 Nov 2019 12:51:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1574887869; cv=none; d=google.com; s=arc-20160816; b=wLjL/PL57NAfAx2ty7zsjlXfOTgvkitO+Ff7dzfyr96549RoKPY3A85I3bn3lQjm9p 8d8fu32p0RPKKG+CMNlCZ8ZTzlnjNOOLn+bFiOWUViXF+rll+89tWjU/k2XHX1erdmwi lh/1Moi3I6MPKxPdwNU1gfXA4OAXj/1ad7Wyz8OWwpwBZcBtdo1/G5tNqqm6bqCedkfN 7o1es4RRhD+ryKRv++9w8M/oUTrwTumW5fIh2mjubWozVMyaEjhOc9pMENiyzv3AP/X/ WzYBaY7ZQTWB3XMXbK+CtNsi5nGKo5Lpa00DZZIM8prZX9krlIO+l9KiUsEszVeX1kxV nDew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=sGSupIRUbIn2m4UgKD4w2ru2tAIwrOtQ4PZd28aEnZc=; b=O/jsgGzmzc82Ink6TfsV6UTKdsVKF6umM+I1OsZGIAhhn1aCzBJ2VjGel4DDCODyyV lUswvnHOv+vyGWkrCY7+YolvE7v4GCkhJvivBCsIitrmeyyUMRSDFRIzsPYoQJ6V1CE0 tSzfwPXdhXyPoFrkDrBbWhzefPYIM8Q2UN42ftmuODLRhEznzyJdMzI7+gxXoJ/oBpOk U5AaFiKOqkQencqTSydy4Hfmky1z1Tpz0XzY5ubD+Kf8UqhtrLAl5eu9CQZMrfhOg2Qs CKBO2Dst6S7FYyXRcoo2jjb9SYTtOuem/r6a7v8EpKldcQXUlt7YrUpZbmyiqIYFOMcf v7jg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=z7xlFXOi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p92si12028117edd.407.2019.11.27.12.50.46; Wed, 27 Nov 2019 12:51:09 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=z7xlFXOi; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729893AbfK0Uqd (ORCPT + 99 others); Wed, 27 Nov 2019 15:46:33 -0500 Received: from mail.kernel.org ([198.145.29.99]:58512 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729887AbfK0Uqc (ORCPT ); Wed, 27 Nov 2019 15:46:32 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C73A62158A; Wed, 27 Nov 2019 20:46:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1574887591; bh=7nybk/T84jG+yY80/3VieVPJKJrELADi6/UIcReZYhM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=z7xlFXOiCJFXNVZjMiyXmJgR/pKVfNFPDvIe9J2DyShO3pUJa0gTXZhwAebC4qHa7 v+tySv80nIwmlIu9ou7n6F6C8WHGkE6uMyrXM3rfwIV6H5z7Ma3OssUQ8iRg/DqqaN fe+tDiC4bqFADiyqh1hRCpxKZtZLoCYqa6jSz+Os= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org, Steven Rostedt Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Sergey Senozhatsky , Sergey Senozhatsky , Petr Mladek , Sasha Levin Subject: [PATCH 4.14 019/211] printk: fix integer overflow in setup_log_buf() Date: Wed, 27 Nov 2019 21:29:12 +0100 Message-Id: <20191127203052.837882082@linuxfoundation.org> X-Mailer: git-send-email 2.24.0 In-Reply-To: <20191127203049.431810767@linuxfoundation.org> References: <20191127203049.431810767@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sergey Senozhatsky [ Upstream commit d2130e82e9454304e9b91ba9da551b5989af8c27 ] The way we calculate logbuf free space percentage overflows signed integer: int free; free = __LOG_BUF_LEN - log_next_idx; pr_info("early log buf free: %u(%u%%)\n", free, (free * 100) / __LOG_BUF_LEN); We support LOG_BUF_LEN of up to 1<<25 bytes. Since setup_log_buf() is called during early init, logbuf is mostly empty, so __LOG_BUF_LEN - log_next_idx is close to 1<<25. Thus when we multiply it by 100, we overflow signed integer value range: 100 is 2^6 + 2^5 + 2^2. Example, booting with LOG_BUF_LEN 1<<25 and log_buf_len=2G boot param: [ 0.075317] log_buf_len: -2147483648 bytes [ 0.075319] early log buf free: 33549896(-28%) Make "free" unsigned integer and use appropriate printk() specifier. Link: http://lkml.kernel.org/r/20181010113308.9337-1-sergey.senozhatsky@gmail.com To: Steven Rostedt Cc: linux-kernel@vger.kernel.org Cc: Sergey Senozhatsky Signed-off-by: Sergey Senozhatsky Signed-off-by: Petr Mladek Signed-off-by: Sasha Levin --- kernel/printk/printk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c index 5b33c14ab8b25..4e50beb162c00 100644 --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -1099,7 +1099,7 @@ void __init setup_log_buf(int early) { unsigned long flags; char *new_log_buf; - int free; + unsigned int free; if (log_buf != __log_buf) return; -- 2.20.1