On Wed 2020-06-24 22:42:12, Herbert Xu wrote: > On Tue, Jun 23, 2020 at 04:28:58PM +0200, Petr Mladek wrote: > > > > My "allmodconfig" build has successfully finished with the following extra > > fix on top of the two patches: > > > > diff --git a/include/linux/list.h b/include/linux/list.h > > index aff44d34f4e4..6d606c4036ce 100644 > > --- a/include/linux/list.h > > +++ b/include/linux/list.h > > @@ -6,7 +6,7 @@ > > #include <linux/stddef.h> > > #include <linux/poison.h> > > #include <linux/const.h> > > -#include <linux/kernel.h> > > +#include <linux/compiler.h> > > Unfortunately this doesn't work because list.h actually does need > kernel.h for container_of. Ah, I see. > However, we can easily fix the loop another way by removing list.h > from lockdep.h as it doesn't actually use any list macros/functions > but only the list type which is now in linux/types.h. > > We could either fold this into the lockdep_types patch, or fold it > into the printk patch, or just leave it as a standalone patch. > What do you guys think? It logically belongs to the lockdep_types area. I think that separate patch is the best solution so that Peter does not need to rebase tip/locking/header. > > ---8<--- > Currently lockdep_types.h includes list.h without actually using any > of its macros or functions. All it needs are the type definitions > which were moved into types.h long ago. This potentially causes > inclusion loops because both are included by many core header > files. > > This patch moves the list.h inclusion into lockdep.h. Note that > we could probably remove it completely but that could potentially > result in compile failures should any end users not include list.h > directly and also be unlucky enough to not get list.h via some other > header file. > > Reported-by: Petr Mladek <pmladek@xxxxxxxx> > Signed-off-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> It works with allmodconfig here, so feel free to use: Tested-by: Petr Mladek <pmladek@xxxxxxxx> Of course, it does not have much value. There might still be another configuration or architecture that does not work but I would leave this for test bots. Best Regards, Petr > > diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h > index 3b73cf84f77d..b1ad5c045353 100644 > --- a/include/linux/lockdep.h > +++ b/include/linux/lockdep.h > @@ -21,6 +21,7 @@ extern int lock_stat; > #ifdef CONFIG_LOCKDEP > > #include <linux/linkage.h> > +#include <linux/list.h> > #include <linux/debug_locks.h> > #include <linux/stacktrace.h> > > diff --git a/include/linux/lockdep_types.h b/include/linux/lockdep_types.h > index 7b9350624577..bb35b449f533 100644 > --- a/include/linux/lockdep_types.h > +++ b/include/linux/lockdep_types.h > @@ -32,8 +32,6 @@ enum lockdep_wait_type { > > #ifdef CONFIG_LOCKDEP > > -#include <linux/list.h> > - > /* > * We'd rather not expose kernel/lockdep_states.h this wide, but we do need > * the total number of states... :-( > -- > Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> > Home Page: http://gondor.apana.org.au/~herbert/ > PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt