From 4149bf498a3490a8ab506109e3893087f35fd23f Mon Sep 17 00:00:00 2001 From: Debabrata Banerjee Date: Wed, 15 Mar 2017 21:01:31 -0400 Subject: [PATCH] Correct signed operation Could return the wrong pages value AKAMAI: zfs: CR 3695072 Reviewed-by: Tim Chase Reviewed-by: Richard Yao Reviewed-by: Brian Behlendorf Signed-off-by: Debabrata Banerjee Issue #6035 --- module/zfs/arc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/module/zfs/arc.c b/module/zfs/arc.c index efac973bae..ce92460616 100644 --- a/module/zfs/arc.c +++ b/module/zfs/arc.c @@ -4430,7 +4430,8 @@ __arc_shrinker_func(struct shrinker *shrink, struct shrink_control *sc) if (current_is_kswapd()) arc_kmem_reap_now(); #ifdef HAVE_SPLIT_SHRINKER_CALLBACK - pages = MAX(pages - btop(arc_evictable_memory()), 0); + pages = MAX((int64_t)pages - + (int64_t)btop(arc_evictable_memory()), 0); #else pages = btop(arc_evictable_memory()); #endif @@ -4438,7 +4439,6 @@ __arc_shrinker_func(struct shrinker *shrink, struct shrink_control *sc) * We've shrunk what we can, wake up threads. */ cv_broadcast(&arc_reclaim_waiters_cv); - } else pages = SHRINK_STOP;