Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2777168pxb; Tue, 23 Feb 2021 15:51:12 -0800 (PST) X-Google-Smtp-Source: ABdhPJwuBa/uIWeVzKlbTNqVUyi8FOCPpT+8EPtbNdRzBjyLCB5PuXAqV9Pqj6yej045na/i10gS X-Received: by 2002:a17:906:5f8b:: with SMTP id a11mr12239139eju.310.1614124271924; Tue, 23 Feb 2021 15:51:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614124271; cv=none; d=google.com; s=arc-20160816; b=p+p+pVzDHL7UwO/w5zR/6PSf+0r1KddxjtuoxHUpYnRt/+KZeoLT65DHMD9KAhlkyQ UD3sagnKk/X3zEirqwW/JuqABp0Gbl57YptHMNGBzbDxQCFLTOg2262x5lUvV4Znj7sY md2gcxoSElsy4CnV8INRWCsDdxhnDh7qGzABNejxvLjrHNRm+FJLOtlLN/uJlKFDtKIk CG4Jhcz6mSNIAayv5hy+eJp9Z/WfhEx2kCnhtTJL+BA2JmNNR6UjoIedeKFWe/2/OA2a 4HCReXX3PjSOZas3FMzEMpPNq0N42AyPw6eOS+5u/e7W9dREZqOJvzMrR5Ay/iWc/3an jIFg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=fLMCDjRMkT+BnAHoD/4z6llwtX3ZJahqTIiAKE/hqrM=; b=r0YGrxyrbphlWMFDcsREFZWPzxDGuHYyEqTAJo7AbiIzaCLP019i0T4Rz8ahZeCJ/F zpVyYOdkGwwKiJ69kVZmwDbMy4cNiykDRLXg5C9w+PMhWqsQXKf3TPyAiPz69qn3LK/k eDf44o9vOWauLypuiV3crd89aOMprv/yRP0Mg29jk7puEClGodHgUc9kGtwsAXm0ZMCU 492VSjTAXeV1pTpIqtXG+tSfosmfOgws/TTSDE3KfAubfLMyiPjspax5GXmwJiDPVk+N fGOWqohi4CDsEhGzz28buTwpL6ob6sr9RSY9guiSTCKkUFjZZfC4n/JdAzSDBSXFJGh5 VwLw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=jQpCCSMt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f27si215507ejf.555.2021.02.23.15.50.36; Tue, 23 Feb 2021 15:51:11 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=jQpCCSMt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234137AbhBWUGJ (ORCPT + 99 others); Tue, 23 Feb 2021 15:06:09 -0500 Received: from mail.kernel.org ([198.145.29.99]:40400 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233143AbhBWUFI (ORCPT ); Tue, 23 Feb 2021 15:05:08 -0500 Received: by mail.kernel.org (Postfix) with ESMTPSA id C3E7864E7A; Tue, 23 Feb 2021 20:04:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1614110667; bh=+q89ijMSvNhad5i+4jjP9hqtvpz1FvP2yvByIBe2DdA=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=jQpCCSMtEUZVsQavQZlAwe0JjYbEVa3HagwuJ7x0tQEbkWrk1t8ku4cJxMYWmRCFi zEv1ep8RKD0kRxNtNIwP3d9n4DhhQp04JciAHCWWorl5NpHtsgiEXvhd/2omwaPiz9 c8uvnBnk85Te0nrLuzz/YTf2ndyzUtrSmHzL+GIHDgbwJjKLM8iOelsm24RCXYDCS3 e9dXqd1hDW+VoqK/xaeiqu0dOw6RuKlJU7Mi8urY7l1479TieEKTH2ccYfkFWhKJ1F Mh1IARuquX2ET6tpJGsKQ+bweHlGVwShMADtX7CayKFaaNiIs9mylzGO/FnLIQM+pI 7ttZTvuOYTajw== Received: by mail-oo1-f42.google.com with SMTP id p6so1093267oot.2; Tue, 23 Feb 2021 12:04:27 -0800 (PST) X-Gm-Message-State: AOAM533h9TXMd7PXZVkfHu9M68KHeIfQo+swAHK4UiwGxRnE9dkYt2za JxDzLIUZKc0cRaOpU4fY9LorGMcT1cub+KYFVnE= X-Received: by 2002:a4a:870c:: with SMTP id z12mr21019075ooh.15.1614110667037; Tue, 23 Feb 2021 12:04:27 -0800 (PST) MIME-Version: 1.0 References: <20210223100619.798698-1-masahiroy@kernel.org> In-Reply-To: <20210223100619.798698-1-masahiroy@kernel.org> From: Arnd Bergmann Date: Tue, 23 Feb 2021 21:04:10 +0100 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH] asm-generic/ioctl.h: use BUILD_BUG_ON_ZERO() for type check To: Masahiro Yamada Cc: Andrew Morton , Arnd Bergmann , "linux-kernel@vger.kernel.org" , linux-arch Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Feb 23, 2021 at 11:06 AM Masahiro Yamada wrote: > > -#ifdef __CHECKER__ > -#define _IOC_TYPECHECK(t) (sizeof(t)) > -#else > /* provoke compile error for invalid uses of size argument */ > -extern unsigned int __invalid_size_argument_for_IOC; > +#undef _IOC_TYPECHECK > #define _IOC_TYPECHECK(t) \ > - ((sizeof(t) == sizeof(t[1]) && \ > - sizeof(t) < (1 << _IOC_SIZEBITS)) ? \ > - sizeof(t) : __invalid_size_argument_for_IOC) > -#endif > + BUILD_BUG_ON_ZERO(sizeof(t) != sizeof(t[1]) || \ > + sizeof(t) >= (1 << _IOC_SIZEBITS)) Using BUILD_BUG_ON_ZERO sounds like a good idea > #endif /* _ASM_GENERIC_IOCTL_H */ > diff --git a/include/uapi/asm-generic/ioctl.h b/include/uapi/asm-generic/ioctl.h > index a84f4db8a250..d50bd39ec3e3 100644 > --- a/include/uapi/asm-generic/ioctl.h > +++ b/include/uapi/asm-generic/ioctl.h > @@ -72,9 +72,8 @@ > ((nr) << _IOC_NRSHIFT) | \ > ((size) << _IOC_SIZESHIFT)) > > -#ifndef __KERNEL__ > -#define _IOC_TYPECHECK(t) (sizeof(t)) > -#endif > +#define _IOC_TYPECHECK(t) 0 > +#define _IOC_SIZE_WITH_TYPECHECK(t) (sizeof(t) + _IOC_TYPECHECK(t)) But I think replacing the #ifndef with an #undef in the other file makes it harder to understand when reading through it and trying to understand what it would do when this gets included from kernel and user space. Arnd