Message ID | 20240909075641.258968-1-ubizjak@gmail.com |
---|---|
Headers | show |
Series | random: Resolve circular include dependency and include <linux/percpu.h> | expand |
Hi Uros, On Mon, Sep 09, 2024 at 09:53:43AM +0200, Uros Bizjak wrote: > a) Substitutes the inclusion of <linux/random.h> with the > inclusion of <linux/prandom.h> where needed (patches 1 - 17). > > b) Removes legacy inclusion of <linux/prandom.h> from > <linux/random.h> (patch 18). > > c) Includes <linux/percpu.h> in <linux/prandom.h> (patch 19). Thanks for doing this. That seems like a fine initiative to me. (I'm also curious about the future percpu changes you've got planned.) Tree-wise, were you expecting me to take this through random.git? And if so, what timeframe did you have in mind? For 6.12 next week (can you poke folks for acks in time?), or punt it for 6.13? Or did you have a different tree in mind for treewide changes (in which case, I'll send you an ack for the [p]random.h changes). Regards, Jason
Hi Uros, On Mon, Sep 09, 2024 at 09:30:06PM +0200, Uros Bizjak wrote: > Besides GCC, clang can define various named address space via > address_space attribute: > > --cut here-- > #define __as(N) __attribute__((address_space(N))) > > void *foo(void __as(1) *x) { return x; } // error > > void *bar(void __as(1) *x) { return (void *)x; } // fine > --cut here-- > > When compiling this, the compiler returns: > > clang-as.c:3:37: error: returning '__as(1) void *' from a function > with result type 'void *' changes address space of pointer Super cool. Looking forward to having it all wired up and the bugs we'll find with it. > I think that the best approach is to target this patchset for linux > 6.13 via random.git tree. I will prepare a v3 after 6.12rc1, so when > committed to random.git, the patchset will be able to spend some time > in linux-next. This way, there will be plenty of time for CI robots to > do additional checks also for some less popular targets (although > individual patches are dead simple, removing these kinds of "legacy" > includes can be tricky), and I will also be able to collect Acked-by:s > in the meantime. > > While the patchset is an improvement by itself, its inclusion is not > time sensitive. The follow up percpu named address checking > functionality requires a very recent feature (__typeof_unqual__ > keyword), which is only supported in recent compilers (gcc-14 and > clang-20). Besides compiler support, sparse doesn't know about > __typeof_unqual__, resulting in broken type tracing and hundreds of > sparse errors with C=1 due to unknown keyword. > > So, I think we are not in a hurry and can take the slow and safe path. Okay, sure, that sounds good to me. I'll keep my eyes open for v3 in a few weeks then. Jason
On Mon, Sep 09, 2024 at 09:53:50AM +0200, Uros Bizjak wrote: > Include <linux/once.h> header to allow the removal of legacy > inclusion of <linux/prandom.h> from <linux/random.h>. > > Signed-off-by: Uros Bizjak <ubizjak@gmail.com> > Cc: Eric Biggers <ebiggers@kernel.org> > Cc: "Theodore Y. Ts'o" <tytso@mit.edu> > Cc: Jaegeuk Kim <jaegeuk@kernel.org> > --- > v2: Include <linux/once.h> instead of <linux/prandom.h> > --- > fs/crypto/keyring.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/fs/crypto/keyring.c b/fs/crypto/keyring.c > index 6681a71625f0..82fcc5683649 100644 > --- a/fs/crypto/keyring.c > +++ b/fs/crypto/keyring.c > @@ -22,6 +22,7 @@ > #include <crypto/skcipher.h> > #include <linux/key-type.h> > #include <linux/random.h> > +#include <linux/once.h> > #include <linux/seq_file.h> > > #include "fscrypt_private.h" Acked-by: Eric Biggers <ebiggers@google.com> - Eric