From: Qingshuang Fu Due to the fact that the tier data type in min (tier, MAX_CR_TIERS -1) is int,but MAX_CR_TIERS is an unsigned type, directly using the min function for comparison will result in an error: from mm/vmscan.c:15: mm/vmscan.c: In function ‘read_ctrl_pos’: ./include/linux/build_bug.h:78:41: error: static assertion failed: "min(tier, 4U - 1) signedness error, fix types or consider umin() before min_t()" Fixes: 37a260870f2c ("mm/mglru: rework type selection") Suggested-by: David Hildenbrand Signed-off-by: Qingshuang Fu --- mm/vmscan.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/vmscan.c b/mm/vmscan.c index 7de11524a936..f991196fd8e5 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -3194,7 +3194,7 @@ static void read_ctrl_pos(struct lruvec *lruvec, int type, int tier, int gain, pos->gain = gain; pos->refaulted = pos->total = 0; - for (i = tier % MAX_NR_TIERS; i <= min(tier, MAX_NR_TIERS - 1); i++) { + for (i = tier % MAX_NR_TIERS; i <= min_t(int, tier, MAX_NR_TIERS - 1); i++) { pos->refaulted += lrugen->avg_refaulted[type][i] + atomic_long_read(&lrugen->refaulted[hist][type][i]); pos->total += lrugen->avg_total[type][i] + -- 2.25.1