mm/vmscan: sc->reclaim_idx must be a valid zone index
authorWei Yang <richard.weiyang@gmail.com>
Fri, 29 Apr 2022 06:16:04 +0000 (23:16 -0700)
committerakpm <akpm@linux-foundation.org>
Fri, 29 Apr 2022 06:16:04 +0000 (23:16 -0700)
lruvec_lru_size() is only used in get_scan_count(), so the only possible
zone_idx is sc->reclaim_idx.  Since sc->reclaim_idx is ensured to be a
valid zone idex, we can remove the extra check for zone iteration.

Link: https://lkml.kernel.org/r/20220317234624.23358-1-richard.weiyang@gmail.com
Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/vmscan.c

index cd9f222..f6570f3 100644 (file)
@@ -587,7 +587,7 @@ unsigned long zone_reclaimable_pages(struct zone *zone)
  * lruvec_lru_size -  Returns the number of pages on the given LRU list.
  * @lruvec: lru vector
  * @lru: lru to use
- * @zone_idx: zones to consider (use MAX_NR_ZONES for the whole LRU list)
+ * @zone_idx: zones to consider (use MAX_NR_ZONES - 1 for the whole LRU list)
  */
 static unsigned long lruvec_lru_size(struct lruvec *lruvec, enum lru_list lru,
                                     int zone_idx)
@@ -595,7 +595,7 @@ static unsigned long lruvec_lru_size(struct lruvec *lruvec, enum lru_list lru,
        unsigned long size = 0;
        int zid;
 
-       for (zid = 0; zid <= zone_idx && zid < MAX_NR_ZONES; zid++) {
+       for (zid = 0; zid <= zone_idx; zid++) {
                struct zone *zone = &lruvec_pgdat(lruvec)->node_zones[zid];
 
                if (!managed_zone(zone))