Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp545168yba; Wed, 24 Apr 2019 05:51:24 -0700 (PDT) X-Google-Smtp-Source: APXvYqz4mI6HurOd5KHUPIy/Ha0vmSFKvvY1ve6VS18qM8yjA53BgEtSjec8f3s6FaV2xKR+RBuv X-Received: by 2002:a65:6282:: with SMTP id f2mr8611183pgv.152.1556110284655; Wed, 24 Apr 2019 05:51:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556110284; cv=none; d=google.com; s=arc-20160816; b=qNK7IsaZp5FTsbZALroZlfWQQl9infu3F7rYLO5dT8H1u9i5ICBoMCCA9PyS6UMRYU t9kj7sq+6hCGoYvsANetDI1mgXxiTRsw7fXZVAOyY0T5vpHJGhOo0nVclNi3nZDCjnCF EF5B3bUgvuiyohJd3XavaCQJZIXZUsZhHI0NuH20EBxerfReGfRdmFmA/7H0TCNCzZIm CK6P+vTZu5cYM/sFqRr0Px3U8fO1IatWBNJRia69ziE1rimUDd3Ku3iq0+BP7luv2d5M 4Y6yKm0QLSM+kL0QQQPQppPE28fm1+24cd0Y0vQaOjvNdf2SXOFosxflo8H1hejtEHsg gKaw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=QI1TW2hp+1xswFZfDOPzLwrYB1RmE9YLYJxMorNlVnA=; b=I2JxgXAYtODWAPEV+oTa6BXIIFXWPhFO3MWPsF9rzFLSpp/7fBP0c2TkchU9W90Aj5 nuLewYIbo8yYLsA9d6u6zrONk1/eucIl0vstNYWhZyaEtJOY2SMcVncpEmwciloIv/sO ZdQNZ3NHGKR+53MEEScMts0v1600F0iTVOOjIXUNIDwXo5iNuT6Sp7nh2GrZZjw9Uzou BAQdIdyc0B0dniFz6E44W1wn53v9esBlunk5nd1gb1wxvmWScsgpa1EDqVdOzpif95oQ iDqAh6oJZkM6j5IXFCw77+Hi8XcaR/LlUrANf9v2C46mybxxU/tOfoUC6MxUPbDgo+rR GLfw== ARC-Authentication-Results: i=1; mx.google.com; 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 f12si17104584pgo.388.2019.04.24.05.51.08; Wed, 24 Apr 2019 05:51:24 -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; 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 S1730134AbfDXMtX (ORCPT + 99 others); Wed, 24 Apr 2019 08:49:23 -0400 Received: from mx2.suse.de ([195.135.220.15]:54988 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727518AbfDXMtW (ORCPT ); Wed, 24 Apr 2019 08:49:22 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 68A15AEC6; Wed, 24 Apr 2019 12:49:21 +0000 (UTC) Date: Wed, 24 Apr 2019 14:49:20 +0200 From: Petr Mladek To: Jiri Kosina Cc: Josh Poimboeuf , Miroslav Benes , Joe Lawrence , Kamalesh Babulal , live-patching@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 3/3] livepatch: Cleanup message handling in klp_try_switch_task() Message-ID: <20190424124920.wzhr7w7pnon54pqh@pathway.suse.cz> References: <20190424085550.29612-1-pmladek@suse.com> <20190424085550.29612-4-pmladek@suse.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: NeoMutt/20170912 (1.9.0) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed 2019-04-24 12:41:00, Jiri Kosina wrote: > On Wed, 24 Apr 2019, Petr Mladek wrote: > > > WARN_ON_ONCE() could not be called safely under rq lock because > > of console deadlock issues. Fortunately, simple printk_deferred() > > is enough because the warning is printed from a well defined > > location and context. > > > > Also klp_try_switch_task() is called under klp_mutex. > > Therefore, the buffer for debug messages could be static. > > > > Signed-off-by: Petr Mladek > > --- > > kernel/livepatch/transition.c | 19 ++++++++++++++----- > > 1 file changed, 14 insertions(+), 5 deletions(-) > > > > diff --git a/kernel/livepatch/transition.c b/kernel/livepatch/transition.c > > index 9c89ae8b337a..e8183d18227f 100644 > > --- a/kernel/livepatch/transition.c > > +++ b/kernel/livepatch/transition.c > > @@ -254,6 +254,7 @@ static int klp_check_stack_func(struct klp_func *func, > > static int klp_check_stack(struct task_struct *task, char *err_buf) > > { > > static unsigned long entries[MAX_STACK_ENTRIES]; > > + static int enosys_warned; > > struct stack_trace trace; > > struct klp_object *obj; > > struct klp_func *func; > > @@ -263,8 +264,16 @@ static int klp_check_stack(struct task_struct *task, char *err_buf) > > trace.nr_entries = 0; > > trace.max_entries = MAX_STACK_ENTRIES; > > trace.entries = entries; > > + > > ret = save_stack_trace_tsk_reliable(task, &trace); > > - WARN_ON_ONCE(ret == -ENOSYS); > > + if (ret == -ENOSYS) { > > + if (!enosys_warned) { > > + printk_deferred(KERN_WARNING "%s: save_stack_trace_tsk_reliable() not supported on this architecture.\n", > > + __func__); > > + enosys_warned = 1; > > ... abusing the fact that you are also printk maintainer :) ... looking at > the above, wouldn't it make sense to introduce generic > printk_deferred_once() instead? Yeah, I thought about it. Also pr_debug_deferred() would be useful for the other messages passed via err_buf. Sigh, printk_deferred() is whack-a-mole approach. We use it because we do not have anything better for the deadlocks. I am a bit scared to add more wrappers because it might encourage people to use it more widely, e.g. to avoid softlockups or secure fast paths. On the other hand, it still looks better to find all occurrences easily instead of hiding them into a custom workarounds. OK, I am going to prepare new patchset and involve printk people into it. Best Regards, Petr