From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752949AbbBWSJ1 (ORCPT ); Mon, 23 Feb 2015 13:09:27 -0500 Received: from hedwig.cmf.nrl.navy.mil ([134.207.12.162]:46432 "EHLO hedwig.cmf.nrl.navy.mil" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752232AbbBWSJ0 (ORCPT ); Mon, 23 Feb 2015 13:09:26 -0500 X-Greylist: delayed 751 seconds by postgrey-1.27 at vger.kernel.org; Mon, 23 Feb 2015 13:09:25 EST Date: Mon, 23 Feb 2015 12:50:25 -0500 From: chas williams - CONTRACTOR To: Fabian Frederick Cc: linux-kernel@vger.kernel.org, davem@davemloft.net, Peter Zijlstra , netdev@vger.kernel.org Subject: Re: [PATCH 1/1 net-next] net/atm/signaling.c: replace current->state by __set_current_state() Message-ID: <20150223125025.61a25b4a@thirdoffive.cmf.nrl.navy.mil> In-Reply-To: <1424712667-11849-1-git-send-email-fabf@skynet.be> References: <1424712667-11849-1-git-send-email-fabf@skynet.be> X-Mailer: Claws Mail 3.11.1 (GTK+ 2.24.22; x86_64-redhat-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-NRLCMF-Spam-Score: () hits=-0.001 X-NRLCMF-Virus-Scanned: No virus found X-NRLCMF-Languages: en Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Instead of fixing code that never gets compiled/test, you could probably just remove the #if WAIT_FOR_DAEMON code which would get rid of this raw assignment. See the #undef around line 268. On Mon, 23 Feb 2015 18:31:07 +0100 Fabian Frederick wrote: > Use helper functions to access current->state. > Direct assignments are prone to races and therefore buggy. > > Thanks to Peter Zijlstra for the exact definition of the problem. > > Suggested-By: Peter Zijlstra > Signed-off-by: Fabian Frederick > --- > net/atm/signaling.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/atm/signaling.c b/net/atm/signaling.c > index 523bce7..0140832 100644 > --- a/net/atm/signaling.c > +++ b/net/atm/signaling.c > @@ -40,7 +40,7 @@ static void sigd_put_skb(struct sk_buff *skb) > pr_debug("atmsvc: waiting for signaling daemon...\n"); > schedule(); > } > - current->state = TASK_RUNNING; > + __set_current_state(TASK_RUNNING); > remove_wait_queue(&sigd_sleep, &wait); > #else > if (!sigd) {