Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754740AbcDYO1q (ORCPT ); Mon, 25 Apr 2016 10:27:46 -0400 Received: from foss.arm.com ([217.140.101.70]:46910 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752190AbcDYO1p (ORCPT ); Mon, 25 Apr 2016 10:27:45 -0400 Date: Mon, 25 Apr 2016 15:27:35 +0100 From: Mark Rutland To: Matt Fleming Cc: Ard Biesheuvel , Robin Murphy , "linux-efi@vger.kernel.org" , Russell King - ARM Linux , Catalin Marinas , Will Deacon , "linux-kernel@vger.kernel.org" , Leif Lindholm , "mingo@redhat.com" , "hpa@zytor.com" , "tglx@linutronix.de" , "linux-arm-kernel@lists.infradead.org" Subject: Re: [PATCHv3 1/5] efi/runtime-wrappers: detect FW irq flag corruption Message-ID: <20160425142735.GA14974@leverpostej> References: <1461591994-14918-1-git-send-email-mark.rutland@arm.com> <1461591994-14918-2-git-send-email-mark.rutland@arm.com> <571E25B1.8070305@arm.com> <20160425141557.GA2829@codeblueprint.co.uk> <20160425142435.GB2829@codeblueprint.co.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160425142435.GB2829@codeblueprint.co.uk> 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 Content-Length: 1583 Lines: 41 On Mon, Apr 25, 2016 at 03:24:35PM +0100, Matt Fleming wrote: > On Mon, 25 Apr, at 04:18:41PM, Ard Biesheuvel wrote: > > On 25 April 2016 at 16:15, Matt Fleming wrote: > > > On Mon, 25 Apr, at 03:12:01PM, Robin Murphy wrote: > > >> >+static void efi_call_virt_check_flags(unsigned long flags, const char *call) > > >> >+{ > > >> >+ unsigned long cur_flags; > > >> >+ bool mismatch; > > >> >+ > > >> >+ local_save_flags(cur_flags); > > >> >+ > > >> >+ mismatch = !!((cur_flags ^ flags) & ARCH_EFI_IRQ_FLAGS_MASK); > > >> > > >> nit: the assignment itself is already a conversion to bool, so the > > >> excitement is redundant here. > > > > > > This was intentional. I asked Mark to make this change so that it's > > > explicit for the developer that we're performing the type conversion. > > > > But replacing an implicit boolean cast with an explicit one makes > > little sense, no? Don't we simply want '!= 0' here if you need a > > boolean expression? > > Aha but '!!' is fewer characters to type!! > > I'm not that bothered as long as we don't stuff an int into a bool > without giving the programmer some idea we're doing that. It's not > about the compiler getting it wrong, more about a developer > introducing a bug when they change the code in the future. > > Unless anyone objects, I'll fix this up to use '!= 0' when I apply it. I have no strong preference so long as the code is correct. Another option is to get rid of the bool entirely: flags ^= cur_flags; if (!WARN_ON(flags & ARCH_EFI_IRQ_FLAGS_MASK)) return; Mark.