Hello Yu Zhao, The patch 081488051d28: "mm/mglru: fix underprotected page cache" from Dec 7, 2023 (linux-next), leads to the following Smatch static checker warning: mm/workingset.c:318 lru_gen_refault() warn: always true condition '(refs >= ((((1))) << (__builtin_choose_expr((4 == 4), (((2) < (64 - 26 - 3 - 3 - 0 - 10 - 0 - (8 + 14))) ?(2):(64 - 26 - 3 - 3 - 0 - 10 - 0 - (8 + 14))), ))) - 1) => (s32min-s32max >= 0)' mm/workingset.c 308 atomic_long_add(delta, &lrugen->refaulted[hist][type][tier]); 309 mod_lruvec_state(lruvec, WORKINGSET_ACTIVATE_BASE + type, delta); 310 311 /* 312 * Count the following two cases as stalls: 313 * 1. For pages accessed through page tables, hotter pages pushed out 314 * hot pages which refaulted immediately. 315 * 2. For pages accessed multiple times through file descriptors, 316 * they would have been protected by sort_folio(). 317 */ --> 318 if (lru_gen_in_fault() || refs >= BIT(LRU_REFS_WIDTH) - 1) { ^^^^^^^^^^^^^^^^^^^^^^^ In my x86 allmodconfig this is zero and refs is always >= 0. This could be intentional, but I thought it was worth checking. 319 set_mask_bits(&folio->flags, 0, LRU_REFS_MASK | BIT(PG_workingset)); 320 mod_lruvec_state(lruvec, WORKINGSET_RESTORE_BASE + type, delta); 321 } 322 unlock: 323 rcu_read_unlock(); 324 } regards, dan carpenter