Commit 2b6a3f061f11 ("mm: declare VMA flags by bit") significantly changed how VMA flags are declared, utilising an enum of VMA bit values and ifdef-fery VM_xxx flag declarations via macro. As part of this change, it uses INIT_VM_FLAG() to define VM_xxx flags from the newly introduced VMA bit numbers. However, use of this macro results in apparently unfortunate macro expansion and resulted in a performance degradation.This appears to be due to the (__force int), which is required for the sparse typechecking to work. Avoid macro expansion issues by simply using 1UL << bitnum. Reported-by: kernel test robot Closes: https://lore.kernel.org/oe-lkp/202512041634.150c7e4f-lkp@intel.com Signed-off-by: Lorenzo Stoakes --- Andrew - note I've referenced the linux-next commit number above, could you replace with the upstream commit hash once your PR is taken? Thanks! include/linux/mm.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/linux/mm.h b/include/linux/mm.h index a2f38fb68840..c4438b30c140 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -395,7 +395,8 @@ enum { #undef DECLARE_VMA_BIT #undef DECLARE_VMA_BIT_ALIAS -#define INIT_VM_FLAG(name) BIT((__force int) VMA_ ## name ## _BIT) +#define INIT_VM_FLAG(name) (1UL << (__force int)(VMA_ ## name ## _BIT)) + #define VM_READ INIT_VM_FLAG(READ) #define VM_WRITE INIT_VM_FLAG(WRITE) #define VM_EXEC INIT_VM_FLAG(EXEC) -- 2.52.0