Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753476AbbEGJ6k (ORCPT ); Thu, 7 May 2015 05:58:40 -0400 Received: from mail-wg0-f54.google.com ([74.125.82.54]:36085 "EHLO mail-wg0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751997AbbEGJ6h (ORCPT ); Thu, 7 May 2015 05:58:37 -0400 Date: Thu, 7 May 2015 11:58:32 +0200 From: Ingo Molnar To: Frederic Weisbecker Cc: LKML , "Rafael J . Wysocki" , Peter Zijlstra , Mike Galbraith , Chris Metcalf , Dave Jones , Thomas Gleixner , Oleg Nesterov , "Paul E . McKenney" , Ingo Molnar , Rik van Riel , Martin Schwidefsky Subject: Re: [PATCH 1/4] context_tracking: Protect against recursion Message-ID: <20150507095832.GA7976@gmail.com> References: <1430928266-24888-1-git-send-email-fweisbec@gmail.com> <1430928266-24888-2-git-send-email-fweisbec@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1430928266-24888-2-git-send-email-fweisbec@gmail.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1318 Lines: 48 * Frederic Weisbecker wrote: > @@ -75,6 +94,11 @@ void context_tracking_enter(enum ctx_state state) > WARN_ON_ONCE(!current->mm); > > local_irq_save(flags); > + if (!context_tracking_recursion_enter()) { > + local_irq_restore(flags); > + return; > + } > + > if ( __this_cpu_read(context_tracking.state) != state) { > if (__this_cpu_read(context_tracking.active)) { > /* > @@ -105,6 +129,7 @@ void context_tracking_enter(enum ctx_state state) > */ > __this_cpu_write(context_tracking.state, state); > } > + context_tracking_recursion_exit(); > local_irq_restore(flags); > } So why not add an 'out_irq_restore:' label and use goto instead of duplicating the return path in the recursion check? > NOKPROBE_SYMBOL(context_tracking_enter); > @@ -139,6 +164,10 @@ void context_tracking_exit(enum ctx_state state) > return; > > local_irq_save(flags); > + if (!context_tracking_recursion_enter()) { > + local_irq_restore(flags); > + return; Ditto. No need to resend, I fixed this up in the patch. Thanks, Ingo -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/