On Wed, Jun 22, 2016 at 06:00:12PM +0200, Vlastimil Babka wrote:
> >>-           enum zone_type classzone_idx;
> >>-
> >>            if (!populated_zone(zone))
> >>                    continue;
> >>
> >>-           classzone_idx = requested_highidx;
> >>+           /*
> >>+            * Note that reclaim_idx does not change as it is the highest
> >>+            * zone reclaimed from which for empty zones is a no-op but
> >>+            * classzone_idx is used by shrink_node to test if the slabs
> >>+            * should be shrunk on a given node.
> >>+            */
> >>            while (!populated_zone(zone->zone_pgdat->node_zones +
> >>-                                                   classzone_idx))
> >>+                                                   classzone_idx)) {
> >>                    classzone_idx--;
> >>+                   continue;
> 
> Oh and Michal's comment on Patch 20 made me realize that my objection to v6
> about possible underflow of sc->reclaim_idx and classzone_idx seems to still
> apply here for classzone_idx?

Potentially. The relevant code now looks like this

                classzone_idx = sc->reclaim_idx;
                while (!populated_zone(zone->zone_pgdat->node_zones +
                                                        classzone_idx))
                        classzone_idx--;

-- 
Mel Gorman
SUSE Labs

Reply via email to