On Wed, 9 Feb 2022 09:47:53 +0000 SeongJae Park <sj@xxxxxxxxxx> wrote: > 'migrate_vma_{setup,pages,finalize}()' functions are defined under > CONFIG_DEVICE_PRIVATE, but their declarations are not. This commit > wraps the declaration under the config to minimize confusion. > > ... > > --- a/include/linux/migrate.h > +++ b/include/linux/migrate.h > @@ -162,9 +162,14 @@ struct migrate_vma { > unsigned long flags; > }; > > +#ifdef CONFIG_DEVICE_PRIVATE > + > int migrate_vma_setup(struct migrate_vma *args); > void migrate_vma_pages(struct migrate_vma *migrate); > void migrate_vma_finalize(struct migrate_vma *migrate); > + > +#endif /* CONFIG_DEVICE_PRIVATE */ > + We often don't do this. The advantage is that errors are revealed at compile time rather than at link time. But the downside is quite a lot of maintenance overhead and messier-looking header files. And that maintenance overhead is significant, partly because we can get this wrong but the kernel will still happily compile and boot! So the only way to maintain these things is by inspection.