From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753917AbcGHICW (ORCPT ); Fri, 8 Jul 2016 04:02:22 -0400 Received: from merlin.infradead.org ([205.233.59.134]:36914 "EHLO merlin.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751836AbcGHICI (ORCPT ); Fri, 8 Jul 2016 04:02:08 -0400 Date: Fri, 8 Jul 2016 10:02:03 +0200 From: Peter Zijlstra To: Alexey Dobriyan Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] make WRITE_ONCE return void Message-ID: <20160708080203.GW30921@twins.programming.kicks-ass.net> References: <20160707222008.GE31678@p183.telecom.by> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160707222008.GE31678@p183.telecom.by> User-Agent: Mutt/1.5.23.1 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jul 08, 2016 at 01:20:08AM +0300, Alexey Dobriyan wrote: > Currently WRITE_ONCE is used as if it returns void. Let's codify this > before somebody tries to be smarter than necessary. > > Signed-off-by: Alexey Dobriyan > --- > > include/linux/compiler.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > --- a/include/linux/compiler.h > +++ b/include/linux/compiler.h > @@ -301,7 +301,7 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s > union { typeof(x) __val; char __c[1]; } __u = \ > { .__val = (__force typeof(x)) (val) }; \ > __write_once_size(&(x), __u.__c, sizeof(x)); \ > - __u.__val; \ > + (void)0; \ > }) Why then still use the statement expression? Would it not make more sense to change it into the regular do { } while (0) form if you want to remove the return semantics?