Received: by 2002:a25:824b:0:0:0:0:0 with SMTP id d11csp571539ybn; Thu, 3 Oct 2019 09:02:19 -0700 (PDT) X-Google-Smtp-Source: APXvYqwXKb2hzqcSYBZRktuOIBNTqNV2FOplSgK6dmR9Okh8s6TOF0E/TM0eUWkGS27wm97rV5Rs X-Received: by 2002:a17:906:6084:: with SMTP id t4mr8166171ejj.164.1570118538924; Thu, 03 Oct 2019 09:02:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1570118538; cv=none; d=google.com; s=arc-20160816; b=mUcJE2r1BY3j7+R11SleMk9NNkNAoOHcjlu9/367REnSekjuwNJNQv8N3ljiqVb39+ VdFPzyOfidABIT0D+s4hhjWOUkca3QjaduCgA9yv7ah3DGVA9QX+sOTJEFQg8P1TzR/w FEmQhd/PdziZh349FXULQ0mC0TUwjzfNSectZROL4h43KUlS1vNFkXT1DtOjJ4oJjLmt JYZeLo5D4EuMmX6QGhvLEyB0vrmCZKZJnB0BQ+xOPsTHCjtywnxGVd/Q/32uCi49Nhyz zM5QTQDtm7qbEypzZrDwhiC0tbDI+azTEqC9za6pRP8swukJra42KVDmlvlGBjaegOi6 bEVg== 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=xL0TrjJnMuPJfiTjjFAniSeHISkYlFUtzp5TxQebOrA=; b=h6ThBzxD50g+CBea+YfqhzwkSTV6ITSIxZHMya5k2jyLRiHyriW/KHsnA5PcD/7mdU z/BBWb9vhR53JUZCpFyii6UUkNYzHXgElVnTBgKpxuGZGgoDR0nsYqgfbvjN/dlQ3ieD YdawkVqpMxmK8FLe0X3nk5sO53LD/7TfsGRBZNzPbxpQHV2ib6256yQyy7BRB8vJjptq Ecqp/Ko75VWyL7zMDxxLmBQegb4yUX/CBJEBrBZnfKXMd9BXm7A5/PXIAKhvO6mAQf+E 5x3V8uE3faMnrGvX0BMKV+aNb9qUKE8+wqEw+aJVX+u8H+nKt+MVzFdCv9yweY952ESm KEuw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Z9rHmToF; 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 y1si1435260ejr.272.2019.10.03.09.01.53; Thu, 03 Oct 2019 09:02:18 -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=Z9rHmToF; 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 S1731323AbfJCP7O (ORCPT + 99 others); Thu, 3 Oct 2019 11:59:14 -0400 Received: from mail.kernel.org ([198.145.29.99]:42166 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730432AbfJCP7L (ORCPT ); Thu, 3 Oct 2019 11:59:11 -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 9768D21783; Thu, 3 Oct 2019 15:59:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1570118351; bh=UlT1vVNnYM1l4hs0IoF416jJpsFv0w3g3CY/qZ0IhEY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Z9rHmToFIGH9S1/HSKowSBitTcrBgw50qvwNkPKqarTbNYxUSDXBNS6ZjF+iJCkVl FxyuyT9cmR17b3yjADQoug+P85Ypva69K3aW216aSej+LYiSbW88rhjkrwu+clB0mz q4txaK+tii6t5vHfrqnyMCRcFnf8JQ5dFDcIa2e8= 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 , Sasha Levin Subject: [PATCH 4.4 78/99] printk: Do not lose last line in kmsg buffer dump Date: Thu, 3 Oct 2019 17:53:41 +0200 Message-Id: <20191003154334.935575003@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20191003154252.297991283@linuxfoundation.org> References: <20191003154252.297991283@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 [ Upstream commit b46eff55ad5bd98e746c0a7022fe7ee071de5fee ] 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: Sasha Levin --- kernel/printk/printk.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- a/kernel/printk/printk.c +++ b/kernel/printk/printk.c @@ -3048,7 +3048,7 @@ bool kmsg_dump_get_buffer(struct kmsg_du seq = dumper->cur_seq; idx = dumper->cur_idx; prev = 0; - 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, prev, true, NULL, 0);