From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934324AbcCNNQb (ORCPT ); Mon, 14 Mar 2016 09:16:31 -0400 Received: from bombadil.infradead.org ([198.137.202.9]:42066 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S934214AbcCNNQ3 (ORCPT ); Mon, 14 Mar 2016 09:16:29 -0400 Date: Mon, 14 Mar 2016 14:16:21 +0100 From: Peter Zijlstra To: Davidlohr Bueso Cc: tglx@linutronix.de, mingo@kernel.org, bigeasy@linutronix.de, umgwanakikbuti@gmail.com, paulmck@linux.vnet.ibm.com, linux-kernel@vger.kernel.org, Davidlohr Bueso Subject: Re: [PATCH 2/3] rtmutex: Add rt_mutex_init_waiter helper Message-ID: <20160314131621.GX6356@twins.programming.kicks-ass.net> References: <1457461223-4301-1-git-send-email-dave@stgolabs.net> <1457461223-4301-3-git-send-email-dave@stgolabs.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1457461223-4301-3-git-send-email-dave@stgolabs.net> User-Agent: Mutt/1.5.21 (2012-12-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Mar 08, 2016 at 10:20:22AM -0800, Davidlohr Bueso wrote: > +++ b/kernel/futex.c > @@ -2778,10 +2778,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, unsigned int flags, > * The waiter is allocated on our stack, manipulated by the requeue > * code while we sleep on uaddr. > */ > - debug_rt_mutex_init_waiter(&rt_waiter); > - RB_CLEAR_NODE(&rt_waiter.pi_tree_entry); > - RB_CLEAR_NODE(&rt_waiter.tree_entry); > - rt_waiter.task = NULL; > + rt_mutex_init_waiter(&rt_waiter); > > ret = get_futex_key(uaddr2, flags & FLAGS_SHARED, &key2, VERIFY_WRITE); > if (unlikely(ret != 0)) > +static inline void > +rt_mutex_init_waiter(struct rt_mutex_waiter *waiter) > +{ > + debug_rt_mutex_init_waiter(waiter); > + > + RB_CLEAR_NODE(&waiter->pi_tree_entry); > + RB_CLEAR_NODE(&waiter->tree_entry); > + waiter->task = NULL; > +} Just thinking, would not something like: #define DEFINE_RT_WAITER(name) \ struct rt_mutex_waiter name = { \ .tree_entry = __INIT_RB_NODE(name.tree_entry), \ .pi_tree_entry = __INIT_RB_NODE(name.pi_tree_entry), \ __INIT_RT_WAITER_DEBUG(name) \ } Be nicer? That way we're sure the whole structure is initialized.