On Tue 15-01-19 13:03:07, Michal Hocko wrote: > From: Michal Hocko <mhocko@xxxxxxxx> > > Jan has noticed that we do double unlock on some failure paths when > offlining a page range. This is indeed the case when test_pages_in_a_zone > respp. start_isolate_page_range fail. This was an omission when forward > porting the debugging patch from an older kernel. > > Fix the issue by dropping mem_hotplug_done from the failure condition > and keeping the single unlock in the catch all failure path. > > Reported-by: Jan Kara <jack@xxxxxxx> > Fixes: 7960509329c2 ("mm, memory_hotplug: print reason for the offlining failure") > Signed-off-by: Michal Hocko <mhocko@xxxxxxxx> The patch looks good to me so feel free to add: Reviewed-by: Jan Kara <jack@xxxxxxx> Also it fixes the test that previously crashed for me so you can add: Tested-by: Jan Kara <jack@xxxxxxx> Honza > --- > mm/memory_hotplug.c | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c > index b9a667d36c55..faeeaccc5fae 100644 > --- a/mm/memory_hotplug.c > +++ b/mm/memory_hotplug.c > @@ -1576,7 +1576,6 @@ static int __ref __offline_pages(unsigned long start_pfn, > we assume this for now. .*/ > if (!test_pages_in_a_zone(start_pfn, end_pfn, &valid_start, > &valid_end)) { > - mem_hotplug_done(); > ret = -EINVAL; > reason = "multizone range"; > goto failed_removal; > @@ -1591,7 +1590,6 @@ static int __ref __offline_pages(unsigned long start_pfn, > MIGRATE_MOVABLE, > SKIP_HWPOISON | REPORT_FAILURE); > if (ret) { > - mem_hotplug_done(); > reason = "failure to isolate range"; > goto failed_removal; > } > -- > 2.20.1 > -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR