The 'min_free_kbytes' and 'user_min_free_kbytes' maybe inconsistent after a few times of memory hotplug. When 'new_min_free_kbytes' is not larger than 'user_min_free_kbytes', set 'min_free_kbytes' with 'user_min_free_kbytes' rather than leave it as the 'new_min_free_kbytes' calculated for the last time. Signed-off-by: Liangcai Fan <liangcaifan19@xxxxxxxxx> Cc: Chunyan Zhang <zhang.lyra@xxxxxxxxx> --- mm/page_alloc.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index b37435c..ddf9dc1 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -8467,6 +8467,12 @@ int __meminit init_per_zone_wmark_min(void) if (min_free_kbytes > 262144) min_free_kbytes = 262144; } else { + /* + * Set 'min_free_kbytes' with 'user_min_free_kbytes' rather than + * leave it as the 'new_min_free_kbytes' calculated for the last + * time. + */ + min_free_kbytes = user_min_free_kbytes; pr_warn("min_free_kbytes is not updated to %d because user defined value %d is preferred\n", new_min_free_kbytes, user_min_free_kbytes); } -- 1.9.1