From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934767AbaEFKKx (ORCPT ); Tue, 6 May 2014 06:10:53 -0400 Received: from cantor2.suse.de ([195.135.220.15]:60378 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934643AbaEFKKv (ORCPT ); Tue, 6 May 2014 06:10:51 -0400 Date: Tue, 6 May 2014 12:10:50 +0200 From: Jan Kara To: John Stultz Cc: LKML , Jan Kara , Peter Zijlstra , Jiri Bohac , Thomas Gleixner , Ingo Molnar , Andrew Morton , Steven Rostedt Subject: Re: [PATCH 1/4] printk: Disable preemption for printk_sched Message-ID: <20140506101050.GC9291@quack.suse.cz> References: <1399322864-22861-1-git-send-email-john.stultz@linaro.org> <1399322864-22861-2-git-send-email-john.stultz@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1399322864-22861-2-git-send-email-john.stultz@linaro.org> 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 Mon 05-05-14 13:47:41, John Stultz wrote: > An earlier change in -mm (printk: remove separate printk_sched > buffers...), removed the printk_sched irqsave/restore lines > since it was safe for current users. Since we may be expanding > usage of printk_sched(), disable preepmtion for this function > to make it more generally safe to call. Looks good to me. You can add: Reviewed-by: Jan Kara Honza > > Cc: Jan Kara > Cc: Peter Zijlstra > Cc: Jiri Bohac > Cc: Thomas Gleixner > Cc: Ingo Molnar > Cc: Andrew Morton > Cc: Steven Rostedt > Signed-off-by: John Stultz > --- > kernel/printk/printk.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c > index 82d19e6..57467df 100644 > --- a/kernel/printk/printk.c > +++ b/kernel/printk/printk.c > @@ -2589,12 +2589,14 @@ int printk_sched(const char *fmt, ...) > va_list args; > int r; > > + preempt_disable(); > va_start(args, fmt); > r = vprintk_emit(0, SCHED_MESSAGE_LOGLEVEL, NULL, 0, fmt, args); > va_end(args); > > __this_cpu_or(printk_pending, PRINTK_PENDING_OUTPUT); > irq_work_queue(&__get_cpu_var(wake_up_klogd_work)); > + preempt_enable(); > > return r; > } > -- > 1.9.1 > -- Jan Kara SUSE Labs, CR