From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754784AbcESML6 (ORCPT ); Thu, 19 May 2016 08:11:58 -0400 Received: from mx2.suse.de ([195.135.220.15]:53827 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753942AbcESML5 (ORCPT ); Thu, 19 May 2016 08:11:57 -0400 Subject: Re: [PATCH] mm: compact: fix zoneindex in compact To: Chen Feng , mhocko@suse.com, kirill.shutemov@linux.intel.com, hannes@cmpxchg.org, tj@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Andrew Morton References: <1463659121-84124-1-git-send-email-puck.chen@hisilicon.com> Cc: suzhuangluan@hisilicon.com, dan.zhao@hisilicon.com, qijiwen@hisilicon.com, xuyiping@hisilicon.com, oliver.fu@hisilicon.com, puck.chen@foxmail.com From: Vlastimil Babka Message-ID: <573DAD84.7020403@suse.cz> Date: Thu, 19 May 2016 14:11:48 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.7.0 MIME-Version: 1.0 In-Reply-To: <1463659121-84124-1-git-send-email-puck.chen@hisilicon.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 05/19/2016 01:58 PM, Chen Feng wrote: > While testing the kcompactd in my platform 3G MEM only DMA ZONE. > I found the kcompactd never wakeup. It seems the zoneindex > has already minus 1 before. So the traverse here should be <=. Ouch, thanks! > Signed-off-by: Chen Feng Fixes: 0f87baf4f7fb ("mm: wake kcompactd before kswapd's short sleep") Cc: stable@vger.kernel.org Acked-by: Vlastimil Babka > --- > mm/compaction.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/compaction.c b/mm/compaction.c > index 8fa2540..e5122d9 100644 > --- a/mm/compaction.c > +++ b/mm/compaction.c > @@ -1742,7 +1742,7 @@ static bool kcompactd_node_suitable(pg_data_t *pgdat) > struct zone *zone; > enum zone_type classzone_idx = pgdat->kcompactd_classzone_idx; > > - for (zoneid = 0; zoneid < classzone_idx; zoneid++) { > + for (zoneid = 0; zoneid <= classzone_idx; zoneid++) { > zone = &pgdat->node_zones[zoneid]; > > if (!populated_zone(zone)) >