From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S936414AbcKKSRi (ORCPT ); Fri, 11 Nov 2016 13:17:38 -0500 Received: from mx2.suse.de ([195.135.220.15]:42426 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934785AbcKKSR3 (ORCPT ); Fri, 11 Nov 2016 13:17:29 -0500 Date: Fri, 11 Nov 2016 19:16:44 +0100 From: Petr Mladek To: Steven Rostedt Cc: Linus Torvalds , Joe Perches , Andrew Morton , Sergey Senozhatsky , Jason Wessel , Jaroslav Kysela , Takashi Iwai , Chris Mason , Josef Bacik , David Sterba , linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 3/4] printk/btrfs: Handle more message headers Message-ID: <20161111181644.GC2145@dhcp128.suse.cz> References: <1478695291-12169-1-git-send-email-pmladek@suse.com> <1478695291-12169-4-git-send-email-pmladek@suse.com> <20161111124134.6a7bf9cb@gandalf.local.home> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20161111124134.6a7bf9cb@gandalf.local.home> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri 2016-11-11 12:41:34, Steven Rostedt wrote: > On Wed, 9 Nov 2016 13:41:30 +0100 > Petr Mladek wrote: > > > The commit 4bcc595ccd80decb4245096e ("printk: reinstate KERN_CONT for > > printing continuation lines") allows to define more message headers > > for a single message. The motivation is that continuous lines might > > get mixed. Therefore it make sense to define the right log level > > for every piece of a cont line. > > > > The current btrfs_printk() macros do not support continuous lines > > at the moment. But better be prepared for a custom messages and > > avoid potential "lvl" buffer overflow. > > > > This patch iterates over the entire message header. It is interested > > only into the message level like the original code. > > > > This patch also introduces PRINTK_MAX_SINGLE_HEADER_LEN. Three bytes > > are enough for the message level header at the moment. But it used to > > be three, see the commit 04d2c8c83d0e3ac5f ("printk: convert the format > > for KERN_ to a 2 byte pattern"). > > > > Also I fixed the default ratelimit level. It looked very strange > > when it was different from the default log level. > > > > Signed-off-by: Petr Mladek > > --- > > fs/btrfs/super.c | 26 +++++++++++++++----------- > > include/linux/printk.h | 2 ++ > > 2 files changed, 17 insertions(+), 11 deletions(-) > > > > diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c > > index 74ed5aae6cea..c083d84eaa32 100644 > > --- a/fs/btrfs/super.c > > +++ b/fs/btrfs/super.c > > @@ -202,27 +202,31 @@ void __btrfs_handle_fs_error(struct btrfs_fs_info *fs_info, const char *function > > void btrfs_printk(const struct btrfs_fs_info *fs_info, const char *fmt, ...) > > { > > struct super_block *sb = fs_info->sb; > > - char lvl[4]; > > + char lvl[PRINTK_MAX_SINGLE_HEADER_LEN + 1]; > > struct va_format vaf; > > va_list args; > > - const char *type = logtypes[4]; > > + const char *type = NULL; > > int kern_level; > > struct ratelimit_state *ratelimit; > > > > va_start(args, fmt); > > > > - kern_level = printk_get_level(fmt); > > - if (kern_level) { > > + while ((kern_level = printk_get_level(fmt)) != 0) { > > size_t size = printk_skip_level(fmt) - fmt; > > - memcpy(lvl, fmt, size); > > - lvl[size] = '\0'; > > + > > + if (kern_level >= '0' || kern_level <= '7') { > > Shouldn't this be kernel_level >= '0' && kern_level <= '7' ? Great catch! I am idiot. I did all these patches in a hurry before the Plumber conference. I was blind when checking it later :-( Thanks a lot for such a careful review. Best Regards, Petr