Hi Andrew,
Thanks for taking the time to review!
On Fri, Apr 18, 2025 at 6:02 AM Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote:
On Thu, 17 Apr 2025 20:49:08 +0800 Lance Yang <ioworker0@xxxxxxxxx> wrote:
Add a compile-time check to make sure folio_test_large_maybe_mapped_shared()
is only used with CONFIG_MM_ID enabled, as it directly accesses the _mm_ids
field that only works under CONFIG_MM_ID.
...
--- a/include/linux/page-flags.h
+++ b/include/linux/page-flags.h
@@ -1232,6 +1232,8 @@ static inline int folio_has_private(const struct folio *folio)
static inline bool folio_test_large_maybe_mapped_shared(const struct folio *folio)
{
+ /* This function should never be called without CONFIG_MM_ID enabled. */
+ BUILD_BUG_ON(!IS_ENABLED(CONFIG_MM_ID));
return test_bit(FOLIO_MM_IDS_SHARED_BITNUM, &folio->_mm_ids);
}
#undef PF_ANY
I don't get it. Sounds like we're adding a compile-time check to check
for a compilation error which would have happened anyway.
If folio_test_large_maybe_mapped_shared() is only used with
CONFIG_MM_ID enabled, then do
#ifdef CONFIG_MM_ID
static inline bool folio_test_large_maybe_mapped_shared(...)
{
}
#endif
?
Hmm... we considered using '#ifdef CONFIG_MM_ID' for
folio_test_large_maybe_mapped_shared(),
but since this function should never be called without CONFIG_MM_ID
enabled, compile-time errors might be the way to go -- and a compile-time
check here does the trick ;)