lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20231205132452.418722bea8f6878dca88142a@linux-foundation.org>
Date: Tue, 5 Dec 2023 13:24:52 -0800
From: Andrew Morton <akpm@...ux-foundation.org>
To: Nick Desaulniers <ndesaulniers@...gle.com>
Cc: tanzirh@...gle.com, Kees Cook <keescook@...omium.org>, Andy Shevchenko
 <andy@...nel.org>, linux-hardening@...r.kernel.org,
 linux-kernel@...r.kernel.org, Nick DeSaulniers <nnn@...gle.com>,
 llvm@...ts.linux.dev
Subject: Re: [PATCH] lib/string: shrink lib/string.i via IWYU

On Tue, 5 Dec 2023 13:14:16 -0800 Nick Desaulniers <ndesaulniers@...gle.com> wrote:

> >
> > The preferred way to import bit-fiddling stuff is to include
> > <linux/bits.h>.  Under the hood this may include asm/bitsperlong.h.  Or
> > it may not, depending on Kconfig settings (particularly architecture).
> >
> 
> Just triple checking my understanding; it looks like
> include/linux/bits.h unconditionally includes asm/bitsperlong.h (which
> is implemented per arch) most of which seem to include
> asm-generic/bitsperlong.h.
> 
> include/linux/bits.h also defines a few macros (BIT_MASK, BIT_WORD,
> BITS_PER_BYTE, GENMASK, etc).  If lib/string.c is not using any of
> those, why can't we go straight to #including asm/bitsperlong.h?  That
> should resolve to the arch specific impl which may include
> asm-generic/bitsperlong.h?

It's just a general rule.  If the higher-level include is present, use
that.  Because of the above, plus I guess things might change in the
future.

We've been getting better about irregular asm/include files.

But bits.h is a poor example.  A better case to study is spinlock.h. 
If this tool recommended including asm/spinlock.h then that won't work
on any architecture which doesn't implement SMP (there is no
arch/nios2/include/asm/spinlock.h).

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ