Subject: Re: [PATCH v2 08/16] bitfield: Simplify __BF_FIELD_CHECK_REG()

From: Yury Norov <[email-masked]>
Date: Wed, 17 Dec 2025 19:10:24 -0500

On Wed, Dec 17, 2025 at 10:31:55PM +0000, David Laight wrote:
> On Wed, 17 Dec 2025 10:26:18 +0000
> Jonathan Cameron <[email-masked]> wrote:
> 
> > On Fri, 12 Dec 2025 19:37:13 +0000
> > [email-masked] wrote:
> > 
> > > From: David Laight <[email-masked]>

...

> > > ---
> > > @@ -75,8 +59,8 @@
> > >  	})
> > >  
> > >  #define __BF_FIELD_CHECK_REG(mask, reg, pfx)				\
> > > -	BUILD_BUG_ON_MSG(__bf_cast_unsigned(mask, mask) >		\
> > > -			 __bf_cast_unsigned(reg, ~0ull),		\
> > > +	BUILD_BUG_ON_MSG((mask) + 0U + 0UL + 0ULL >			\
> > > +			 ~0ULL >> (64 - 8 * sizeof (reg)),		\  
> > 
> > Trivial.  sizeof(reg) is much more comment syntax in kernel code.
>                                      (common)
> 
> Hmm. sizeof is an operator not a function.
> Its argument is either a variable/expression or a bracketed type
> (I don't usually put variables in brackets).
> So 'sizeof(reg)' is nearly as bad as 'return(reg)'.

Please re-read Documentation/process/coding-style.rst:

3.1) Spaces
***********

Linux kernel style for use of spaces depends (mostly) on
function-versus-keyword usage.  Use a space after (most) keywords.  The
notable exceptions are sizeof, typeof, alignof, and __attribute__, which look
somewhat like functions (and are usually used with parentheses in Linux,
although they are not required in the language, as in: ``sizeof info`` after
``struct fileinfo info;`` is declared).

So use a space after these keywords::

        if, switch, case, for, do, while

but not with sizeof, typeof, alignof, or __attribute__.  E.g.,

.. code-block:: c

        s = sizeof(struct file);

Do not add spaces around (inside) parenthesized expressions.  This example is
**bad**:

.. code-block:: c

        s = sizeof( struct file );