Received: by 2002:a5b:505:0:0:0:0:0 with SMTP id o5csp63742ybp; Thu, 3 Oct 2019 10:12:58 -0700 (PDT) X-Google-Smtp-Source: APXvYqxzqPlG7r+ZmD4c9w0mLkJKcf0pb9Dh/W0PKW8kB044zsjKnxqv8Ux9p+4ImcB55Egz485N X-Received: by 2002:a50:ed17:: with SMTP id j23mr10607169eds.248.1570122778077; Thu, 03 Oct 2019 10:12:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570122778; cv=none; d=google.com; s=arc-20160816; b=KiDUU80OmQOdM3WJy+o2U5EfKLmYhpAVG5CfMn2rUV59/kLU9TDe6otChHFkL+QMBC AOKjSAQCe6+m3XnwOoCt5Au3fuMxn08qg4ybr0k8K1hqqtGNqhqMvHdtGkGYGDYJt6Rf qFpbHS1DV36524oQAg0dkMXmczXLMr6a1+fMVULreyY45vQVRfgbsQ/0KY8kedopQu7k JI2EaUBWdVWpeg1uOOr2twUfDGKvvjvEYNdQOE8z07SfB8+CMe5dbwm7Az1fGUVxg6K1 euhr/8ygwZknznj1omSINJCt2e44j5rprRY+27ww11GOCMHelzZdM4p5dBdGiRI1oK79 WeSQ== 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=swrDKKk1xCG88vSHEBXaR6Byj2p4/u8YIPKxn3ZPGZo=; b=TuatHnPcPI8awBHZV4AAvNBkGyiEqvSkTIYlmmYfgyNP/zgQhCSHhlMdmxlb5P2nYn qocKaBSEDpjyR5JSyWG/WWIjyTF1wKOBJjhjdtSLslIgW0+iZx4Apr10KHrVJlphdsfr rp4IooJdzRvMxycqb2kqq0Mq2V2txzFfu38KlHN2y9cFtrwnc4H2c+c4ThvwuHGBQEuR t97110v/vh/Dx1NDIMnTGEU6Ja7JxRHD2i6zkO6XoKnkDo52z8LXJlzjJjEu5le8p8uD wfO+RIEeIQzwlI7SDbQv8u5vETcrORTvIMofICGxo2YCxwcW27CoSwRiZKL5pIBQqDNO jZmA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=nbzpc49m; 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 b47si1903148edc.45.2019.10.03.10.12.33; Thu, 03 Oct 2019 10:12:58 -0700 (PDT) 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=nbzpc49m; 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 S2392076AbfJCQeA (ORCPT + 99 others); Thu, 3 Oct 2019 12:34:00 -0400 Received: from mail.kernel.org ([198.145.29.99]:42094 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2391065AbfJCQdx (ORCPT ); Thu, 3 Oct 2019 12:33:53 -0400 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 40F9320830; Thu, 3 Oct 2019 16:33:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1570120432; bh=BZapDg6ZGXM9Rg5kPcRilfrz2LUQyzrkxIwwMOM1Xy0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nbzpc49mwYYk/iN8FrZRD97MSg2E6WVAnofWx20LK3i7Tfp9geNLQnnmBxAmHvfjx djorp6whvxKOrSG2+4yiQmdx1ZmngAsEZ77YziKTMpVybRqf4bZmtnoq1IcVJVKw+0 8esmDatWwl+mBJZ3d74DSgql+K1nY04JkS0j7XS4= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org, rostedt@goodmis.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Vincent Whitchurch , Sergey Senozhatsky , Petr Mladek Subject: [PATCH 5.2 220/313] printk: Do not lose last line in kmsg buffer dump Date: Thu, 3 Oct 2019 17:53:18 +0200 Message-Id: <20191003154554.709877128@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191003154533.590915454@linuxfoundation.org> References: <20191003154533.590915454@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: Vincent Whitchurch commit c9dccacfccc72c32692eedff4a27a4b0833a2afd upstream. kmsg_dump_get_buffer() is supposed to select all the youngest log messages which fit into the provided buffer. It determines the correct start index by using msg_print_text() with a NULL buffer to calculate the size of each entry. However, when performing the actual writes, msg_print_text() only writes the entry to the buffer if the written len is lesser than the size of the buffer. So if the lengths of the selected youngest log messages happen to precisely fill up the provided buffer, the last log message is not included. We don't want to modify msg_print_text() to fill up the buffer and start returning a length which is equal to the size of the buffer, since callers of its other users, such as kmsg_dump_get_line(), depend upon the current behaviour. Instead, fix kmsg_dump_get_buffer() to compensate for this. For example, with the following two final prints: [ 6.427502] AAAAAAAAAAAAA [ 6.427769] BBBBBBBB12345 A dump of a 64-byte buffer filled by kmsg_dump_get_buffer(), before this patch: 00000000: 3c 30 3e 5b 20 20 20 20 36 2e 35 32 32 31 39 37 <0>[ 6.522197 00000010: 5d 20 41 41 41 41 41 41 41 41 41 41 41 41 41 0a ] AAAAAAAAAAAAA. 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ After this patch: 00000000: 3c 30 3e 5b 20 20 20 20 36 2e 34 35 36 36 37 38 <0>[ 6.456678 00000010: 5d 20 42 42 42 42 42 42 42 42 31 32 33 34 35 0a ] BBBBBBBB12345. 00000020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ Link: http://lkml.kernel.org/r/20190711142937.4083-1-vincent.whitchurch@axis.com Fixes: e2ae715d66bf4bec ("kmsg - kmsg_dump() use iterator to receive log buffer content") To: rostedt@goodmis.org Cc: linux-kernel@vger.kernel.org Cc: # v3.5+ Signed-off-by: Vincent Whitchurch Reviewed-by: Sergey Senozhatsky Signed-off-by: Petr Mladek Signed-off-by: Greg Kroah-Hartman --- kernel/printk/printk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -3274,7 +3274,7 @@ bool kmsg_dump_get_buffer(struct kmsg_du /* move first record forward until length fits into the buffer */ seq = dumper->cur_seq; idx = dumper->cur_idx; - while (l > size && seq < dumper->next_seq) { + while (l >= size && seq < dumper->next_seq) { struct printk_log *msg = log_from_idx(idx); l -= msg_print_text(msg, true, time, NULL, 0);