diff mbox series

Revert "mm/page_isolation: unset migratetype directly for non Buddy page"

Message ID 20220117142712.3967624-1-chenwandun@huawei.com (mailing list archive)
State New
Headers show
Series Revert "mm/page_isolation: unset migratetype directly for non Buddy page" | expand

Commit Message

Chen Wandun Jan. 17, 2022, 2:27 p.m. UTC
This reverts commit 075782149abff45ee22f27315eced44d02b96779.

commit 075782149abf ("mm/page_isolation: unset migratetype directly for
non Buddy page") will result memory that should in buddy disappear by
mistake. move_freepages_block move all pages in pageblock instead of
pages indicated by input parameter, so if input pages is not in buddy
but other pages in pageblock is in buddy, it will result in page out of
control.

Reported-by: "kernelci.org bot" <bot@kernelci.org>
Signed-off-by: Chen Wandun <chenwandun@huawei.com>
---
 mm/page_isolation.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

David Hildenbrand Jan. 17, 2022, 3:32 p.m. UTC | #1
On 17.01.22 15:27, Chen Wandun wrote:
> This reverts commit 075782149abff45ee22f27315eced44d02b96779.
> 
> commit 075782149abf ("mm/page_isolation: unset migratetype directly for
> non Buddy page") will result memory that should in buddy disappear by
> mistake. move_freepages_block move all pages in pageblock instead of
> pages indicated by input parameter, so if input pages is not in buddy
> but other pages in pageblock is in buddy, it will result in page out of
> control.
> 

I was wondering about exactly that condition when skimming over the
patch but didn't have time review in detail.

Acked-by: David Hildenbrand <david@redhat.com>

> Reported-by: "kernelci.org bot" <bot@kernelci.org>
> Signed-off-by: Chen Wandun <chenwandun@huawei.com>
> ---
>  mm/page_isolation.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/mm/page_isolation.c b/mm/page_isolation.c
> index 6a0ddda6b3c5..f67c4c70f17f 100644
> --- a/mm/page_isolation.c
> +++ b/mm/page_isolation.c
> @@ -115,7 +115,7 @@ static void unset_migratetype_isolate(struct page *page, unsigned migratetype)
>  	 * onlining - just onlined memory won't immediately be considered for
>  	 * allocation.
>  	 */
> -	if (!isolated_page && PageBuddy(page)) {
> +	if (!isolated_page) {
>  		nr_pages = move_freepages_block(zone, page, migratetype, NULL);
>  		__mod_zone_freepage_state(zone, nr_pages, migratetype);
>  	}
Dong Aisheng Jan. 18, 2022, 1:50 p.m. UTC | #2
On Mon, Jan 17, 2022 at 10:12 PM Chen Wandun <chenwandun@huawei.com> wrote:
>
> This reverts commit 075782149abff45ee22f27315eced44d02b96779.
>
> commit 075782149abf ("mm/page_isolation: unset migratetype directly for
> non Buddy page") will result memory that should in buddy disappear by
> mistake. move_freepages_block move all pages in pageblock instead of
> pages indicated by input parameter, so if input pages is not in buddy
> but other pages in pageblock is in buddy, it will result in page out of
> control.
>
> Reported-by: "kernelci.org bot" <bot@kernelci.org>
> Signed-off-by: Chen Wandun <chenwandun@huawei.com>

The original patch broke imx6ul evk booting up.
Bisect shows it was caused by that patch.
After reverting, it works again.

So:
Tested-by: Dong Aisheng <aisheng.dong@nxp.com>

Below is the original error log:
[    8.710031] kworker/u2:2 invoked oom-killer:
gfp_mask=0xcc0(GFP_KERNEL), order=0, oom_score_adj=0
[    8.719920] CPU: 0 PID: 29 Comm: kworker/u2:2 Not tainted
5.16.0-00095-g721fb891ad0b #95
[    8.728093] Hardware name: Freescale i.MX6 Ultralite (Device Tree)
[    8.734322] Workqueue: events_unbound deferred_probe_work_func
[    8.740258] [<c0111640>] (unwind_backtrace) from [<c010ba84>]
(show_stack+0x10/0x14)
[    8.748080] [<c010ba84>] (show_stack) from [<c0f38aa4>]
(dump_stack_lvl+0x58/0x70)
[    8.755725] [<c0f38aa4>] (dump_stack_lvl) from [<c0f32f60>]
(dump_header+0x54/0x3cc)
[    8.763534] [<c0f32f60>] (dump_header) from [<c02aec94>]
(out_of_memory+0x54c/0x5f0)
[    8.771351] [<c02aec94>] (out_of_memory) from [<c030166c>]
(__alloc_pages+0xda8/0x1224)
[    8.779427] [<c030166c>] (__alloc_pages) from [<c03102f4>]
(new_slab+0x200/0x288)
[    8.786983] [<c03102f4>] (new_slab) from [<c03129ec>]
(___slab_alloc.constprop.0+0x5b0/0xea4)
[    8.795585] [<c03129ec>] (___slab_alloc.constprop.0) from
[<c031331c>] (__slab_alloc.constprop.0+0x3c/0x5c)
[    8.805399] [<c031331c>] (__slab_alloc.constprop.0) from
[<c03135a0>] (__kmalloc_track_caller+0x264/0x3a4)
[    8.815125] [<c03135a0>] (__kmalloc_track_caller) from [<c02c8cec>]
(kstrdup_const+0x4c/0x7c)
[    8.823719] [<c02c8cec>] (kstrdup_const) from [<c03cf890>]
(__kernfs_new_node.constprop.0+0x30/0x260)
[    8.833009] [<c03cf890>] (__kernfs_new_node.constprop.0) from
[<c03d0c4c>] (kernfs_new_node+0x30/0x50)
[    8.842384] [<c03d0c4c>] (kernfs_new_node) from [<c03d2e24>]
(kernfs_create_link+0x40/0xac)
[    8.850804] [<c03d2e24>] (kernfs_create_link) from [<c03d419c>]
(sysfs_do_create_link_sd+0x5c/0xd8)
[    8.859921] [<c03d419c>] (sysfs_do_create_link_sd) from
[<c086e9a4>] (device_add+0x264/0x8a8)
[    8.868518] [<c086e9a4>] (device_add) from [<c09f99dc>]
(usb_add_gadget+0xd0/0x180)
[    8.876246] [<c09f99dc>] (usb_add_gadget) from [<c09fa124>]
(usb_add_gadget_udc+0x78/0xb4)
[    8.884580] [<c09fa124>] (usb_add_gadget_udc) from [<c09ec674>]
(ci_hdrc_gadget_init+0x368/0x3e0)
[    8.893522] [<c09ec674>] (ci_hdrc_gadget_init) from [<c09e7870>]
(ci_hdrc_probe+0x6c8/0x8b8)
[    8.902025] [<c09e7870>] (ci_hdrc_probe) from [<c08756f4>]
(platform_probe+0x58/0xbc)
[    8.909919] [<c08756f4>] (platform_probe) from [<c0872e14>]
(really_probe.part.0+0x9c/0x32c)
[    8.918427] [<c0872e14>] (really_probe.part.0) from [<c0873144>]
(__driver_probe_device+0xa0/0x138)
[    8.927544] [<c0873144>] (__driver_probe_device) from [<c087320c>]
(driver_probe_device+0x30/0x10c)
[    8.936661] [<c087320c>] (driver_probe_device) from [<c08737dc>]
(__device_attach_driver+0xb0/0xf8)
[    8.945778] [<c08737dc>] (__device_attach_driver) from [<c0870ec8>]
(bus_for_each_drv+0x80/0xd0)
[    8.954631] [<c0870ec8>] (bus_for_each_drv) from [<c08734f0>]
(__device_attach+0xd0/0x19c)
[    8.962965] [<c08734f0>] (__device_attach) from [<c0871f5c>]
(bus_probe_device+0x88/0x90)
[    8.971212] [<c0871f5c>] (bus_probe_device) from [<c086ead0>]
(device_add+0x390/0x8a8)
[    8.979195] [<c086ead0>] (device_add) from [<c0875370>]
(platform_device_add+0x100/0x208)
[    8.987436] [<c0875370>] (platform_device_add) from [<c09e686c>]
(ci_hdrc_add_device+0x400/0x538)
[    8.996369] [<c09e686c>] (ci_hdrc_add_device) from [<c09eee90>]
(ci_hdrc_imx_probe+0x250/0x62c)
[    9.005133] [<c09eee90>] (ci_hdrc_imx_probe) from [<c08756f4>]
(platform_probe+0x58/0xbc)
[    9.013375] [<c08756f4>] (platform_probe) from [<c0872e14>]
(really_probe.part.0+0x9c/0x32c)
[    9.021880] [<c0872e14>] (really_probe.part.0) from [<c0873144>]
(__driver_probe_device+0xa0/0x138)
[    9.030995] [<c0873144>] (__driver_probe_device) from [<c087320c>]
(driver_probe_device+0x30/0x10c)
[    9.040110] [<c087320c>] (driver_probe_device) from [<c08737dc>]
(__device_attach_driver+0xb0/0xf8)
[    9.049225] [<c08737dc>] (__device_attach_driver) from [<c0870ec8>]
(bus_for_each_drv+0x80/0xd0)
[    9.058081] [<c0870ec8>] (bus_for_each_drv) from [<c08734f0>]
(__device_attach+0xd0/0x19c)
[    9.066414] [<c08734f0>] (__device_attach) from [<c0871f5c>]
(bus_probe_device+0x88/0x90)
[    9.074659] [<c0871f5c>] (bus_probe_device) from [<c0872390>]
(deferred_probe_work_func+0x78/0xa8)
[    9.083691] [<c0872390>] (deferred_probe_work_func) from
[<c0149174>] (process_one_work+0x294/0x7c0)
[    9.092896] [<c0149174>] (process_one_work) from [<c01496ec>]
(worker_thread+0x4c/0x554)
[    9.101052] [<c01496ec>] (worker_thread) from [<c01525c8>]
(kthread+0x16c/0x194)
[    9.108515] [<c01525c8>] (kthread) from [<c010011c>]
(ret_from_fork+0x14/0x38)
[    9.115800] Exception stack(0xc4349fb0 to 0xc4349ff8)
[    9.120906] 9fa0:                                     00000000
00000000 00000000 00000000
[    9.129138] 9fc0: 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000
[    9.137364] 9fe0: 00000000 00000000 00000000 00000000 00000013 00000000
[    9.145304] Mem-Info:
[    9.147682] active_anon:0 inactive_anon:0 isolated_anon:0
[    9.147682]  active_file:0 inactive_file:0 isolated_file:0
[    9.147682]  unevictable:0 dirty:0 writeback:0
[    9.147682]  slab_reclaimable:2805 slab_unreclaimable:1466
[    9.147682]  mapped:0 shmem:0 pagetables:0 bounce:0
[    9.147682]  kernel_misc_reclaimable:0
[    9.147682]  free:0 free_pcp:5 free_cma:0
[    9.182265] Node 0 active_anon:0kB inactive_anon:0kB
active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB
isolated(file):0kB mapped:0kB dirty:0kB writeback:0kB shmem:0kB
writeback_tmp:0kB kerno
[    9.205657] Normal free:0kB boost:0kB min:2780kB low:3472kB
high:4164kB reserved_highatomic:0KB active_anon:0kB inactive_anon:0kB
active_file:0kB inactive_file:0kB unevictable:0kB writepending:0kB
present:524B
[    9.232095] lowmem_reserve[]: 0 0 0
[    9.235772] Normal: 5*4kB (UMI) 5*8kB (UEI) 10*16kB (UMEI) 9*32kB
(UME) 5*64kB (UME) 7*128kB (UMEI) 7*256kB (UMEI) 4*512kB (MEI)
2*1024kB (M) 4*2048kB (UMI) 5*4096kB (UMEI) 2*8192kB (MI) 5*16384kB
(UMEI) 10*3B
[    9.257621] 0 total pagecache pages
[    9.261441] 0 pages in swap cache
[    9.264820] Swap cache stats: add 0, delete 0, find 0/0
[    9.270258] Free swap  = 0kB
[    9.273199] Total swap = 0kB
[    9.276133] 131072 pages RAM
[    9.279293] 0 pages HighMem/MovableOnly
[    9.283188] 10061 pages reserved
[    9.286468] 16384 pages cma reserved
[    9.290239] Tasks state (memory values in pages):
[    9.295087] [  pid  ]   uid  tgid total_vm      rss pgtables_bytes
swapents oom_score_adj name
[    9.303927] Out of memory and no killable processes...
[    9.309285] Kernel panic - not syncing: System is deadlocked on memory

Regards
Aisheng

> ---
>  mm/page_isolation.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/mm/page_isolation.c b/mm/page_isolation.c
> index 6a0ddda6b3c5..f67c4c70f17f 100644
> --- a/mm/page_isolation.c
> +++ b/mm/page_isolation.c
> @@ -115,7 +115,7 @@ static void unset_migratetype_isolate(struct page *page, unsigned migratetype)
>          * onlining - just onlined memory won't immediately be considered for
>          * allocation.
>          */
> -       if (!isolated_page && PageBuddy(page)) {
> +       if (!isolated_page) {
>                 nr_pages = move_freepages_block(zone, page, migratetype, NULL);
>                 __mod_zone_freepage_state(zone, nr_pages, migratetype);
>         }
> --
> 2.18.0.huawei.25
>
>
Francesco Dolcini Jan. 24, 2022, 8:41 a.m. UTC | #3
On Tue, Jan 18, 2022 at 09:50:42PM +0800, Dong Aisheng wrote:
> On Mon, Jan 17, 2022 at 10:12 PM Chen Wandun <chenwandun@huawei.com> wrote:
> >
> > This reverts commit 075782149abff45ee22f27315eced44d02b96779.
> >
> > commit 075782149abf ("mm/page_isolation: unset migratetype directly for
> > non Buddy page") will result memory that should in buddy disappear by
> > mistake. move_freepages_block move all pages in pageblock instead of
> > pages indicated by input parameter, so if input pages is not in buddy
> > but other pages in pageblock is in buddy, it will result in page out of
> > control.
> >
> > Reported-by: "kernelci.org bot" <bot@kernelci.org>
> > Signed-off-by: Chen Wandun <chenwandun@huawei.com>
> 
> The original patch broke imx6ul evk booting up.
> Tested-by: Dong Aisheng <aisheng.dong@nxp.com>

Same issue present on imx7.
Tested-by: Francesco Dolcini <francesco.dolcini@toradex.com>
Vlastimil Babka Jan. 25, 2022, 4:40 p.m. UTC | #4
On 1/17/22 15:27, Chen Wandun wrote:
> This reverts commit 075782149abff45ee22f27315eced44d02b96779.
> 
> commit 075782149abf ("mm/page_isolation: unset migratetype directly for

That's an old -next commit id, it went to mainline as 721fb891ad0b
("mm/page_isolation: unset migratetype directly for non Buddy page")

> non Buddy page") will result memory that should in buddy disappear by
> mistake. move_freepages_block move all pages in pageblock instead of
> pages indicated by input parameter, so if input pages is not in buddy
> but other pages in pageblock is in buddy, it will result in page out of
> control.
> 
> Reported-by: "kernelci.org bot" <bot@kernelci.org>
> Signed-off-by: Chen Wandun <chenwandun@huawei.com>

Acked-by: Vlastimil Babka <vbabka@suse.cz>

#regzbot ^introduced: 721fb891ad0b

There should better be also:

Fixes: 721fb891ad0b ("mm/page_isolation: unset migratetype directly for non
Buddy page")

Especially as that commit had a (inadequate, IMHO, for an optimization)
Fixes: tag and could end up being backported somewhere without the followup
fix/revert.

> ---
>  mm/page_isolation.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/mm/page_isolation.c b/mm/page_isolation.c
> index 6a0ddda6b3c5..f67c4c70f17f 100644
> --- a/mm/page_isolation.c
> +++ b/mm/page_isolation.c
> @@ -115,7 +115,7 @@ static void unset_migratetype_isolate(struct page *page, unsigned migratetype)
>  	 * onlining - just onlined memory won't immediately be considered for
>  	 * allocation.
>  	 */
> -	if (!isolated_page && PageBuddy(page)) {
> +	if (!isolated_page) {
>  		nr_pages = move_freepages_block(zone, page, migratetype, NULL);
>  		__mod_zone_freepage_state(zone, nr_pages, migratetype);
>  	}
Chen Wandun Jan. 26, 2022, 2:17 a.m. UTC | #5
在 2022/1/17 23:32, David Hildenbrand 写道:
> On 17.01.22 15:27, Chen Wandun wrote:
>> This reverts commit 075782149abff45ee22f27315eced44d02b96779.
>>
>> commit 075782149abf ("mm/page_isolation: unset migratetype directly for
>> non Buddy page") will result memory that should in buddy disappear by
>> mistake. move_freepages_block move all pages in pageblock instead of
>> pages indicated by input parameter, so if input pages is not in buddy
>> but other pages in pageblock is in buddy, it will result in page out of
>> control.
>>
> I was wondering about exactly that condition when skimming over the
> patch but didn't have time review in detail.
when the first valid page in pageblock is non-buddy page and the page order
is not equal pagblock_order,  unset_migratetype_isolate will missing 
move free
page in this pageblock.
>
> Acked-by: David Hildenbrand <david@redhat.com>
>
>> Reported-by: "kernelci.org bot" <bot@kernelci.org>
>> Signed-off-by: Chen Wandun <chenwandun@huawei.com>
>> ---
>>   mm/page_isolation.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/mm/page_isolation.c b/mm/page_isolation.c
>> index 6a0ddda6b3c5..f67c4c70f17f 100644
>> --- a/mm/page_isolation.c
>> +++ b/mm/page_isolation.c
>> @@ -115,7 +115,7 @@ static void unset_migratetype_isolate(struct page *page, unsigned migratetype)
>>   	 * onlining - just onlined memory won't immediately be considered for
>>   	 * allocation.
>>   	 */
>> -	if (!isolated_page && PageBuddy(page)) {
>> +	if (!isolated_page) {
>>   		nr_pages = move_freepages_block(zone, page, migratetype, NULL);
>>   		__mod_zone_freepage_state(zone, nr_pages, migratetype);
>>   	}
>
Chen Wandun Jan. 26, 2022, 2:18 a.m. UTC | #6
在 2022/1/26 0:40, Vlastimil Babka 写道:
> On 1/17/22 15:27, Chen Wandun wrote:
>> This reverts commit 075782149abff45ee22f27315eced44d02b96779.
>>
>> commit 075782149abf ("mm/page_isolation: unset migratetype directly for
> That's an old -next commit id, it went to mainline as 721fb891ad0b
> ("mm/page_isolation: unset migratetype directly for non Buddy page")
>
>> non Buddy page") will result memory that should in buddy disappear by
>> mistake. move_freepages_block move all pages in pageblock instead of
>> pages indicated by input parameter, so if input pages is not in buddy
>> but other pages in pageblock is in buddy, it will result in page out of
>> control.
>>
>> Reported-by: "kernelci.org bot" <bot@kernelci.org>
>> Signed-off-by: Chen Wandun <chenwandun@huawei.com>
> Acked-by: Vlastimil Babka <vbabka@suse.cz>
>
> #regzbot ^introduced: 721fb891ad0b
>
> There should better be also:
>
> Fixes: 721fb891ad0b ("mm/page_isolation: unset migratetype directly for non
> Buddy page")
>
> Especially as that commit had a (inadequate, IMHO, for an optimization)
> Fixes: tag and could end up being backported somewhere without the followup
> fix/revert.
thanks, I will send v2
>
>> ---
>>   mm/page_isolation.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/mm/page_isolation.c b/mm/page_isolation.c
>> index 6a0ddda6b3c5..f67c4c70f17f 100644
>> --- a/mm/page_isolation.c
>> +++ b/mm/page_isolation.c
>> @@ -115,7 +115,7 @@ static void unset_migratetype_isolate(struct page *page, unsigned migratetype)
>>   	 * onlining - just onlined memory won't immediately be considered for
>>   	 * allocation.
>>   	 */
>> -	if (!isolated_page && PageBuddy(page)) {
>> +	if (!isolated_page) {
>>   		nr_pages = move_freepages_block(zone, page, migratetype, NULL);
>>   		__mod_zone_freepage_state(zone, nr_pages, migratetype);
>>   	}
> .
Guenter Roeck Jan. 26, 2022, 9:11 p.m. UTC | #7
On Mon, Jan 17, 2022 at 10:27:12PM +0800, Chen Wandun wrote:
> This reverts commit 075782149abff45ee22f27315eced44d02b96779.
> 
> commit 075782149abf ("mm/page_isolation: unset migratetype directly for
> non Buddy page") will result memory that should in buddy disappear by
> mistake. move_freepages_block move all pages in pageblock instead of
> pages indicated by input parameter, so if input pages is not in buddy
> but other pages in pageblock is in buddy, it will result in page out of
> control.
> 
> Reported-by: "kernelci.org bot" <bot@kernelci.org>
> Signed-off-by: Chen Wandun <chenwandun@huawei.com>

I see a number of qemu emulations fail with memory allocation
errors in v5.17-rc1. This revert fixes the problem.

Tested-by: Guenter Roeck <linux@roeck-us.net>

Guenter

> ---
>  mm/page_isolation.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/mm/page_isolation.c b/mm/page_isolation.c
> index 6a0ddda6b3c5..f67c4c70f17f 100644
> --- a/mm/page_isolation.c
> +++ b/mm/page_isolation.c
> @@ -115,7 +115,7 @@ static void unset_migratetype_isolate(struct page *page, unsigned migratetype)
>  	 * onlining - just onlined memory won't immediately be considered for
>  	 * allocation.
>  	 */
> -	if (!isolated_page && PageBuddy(page)) {
> +	if (!isolated_page) {
>  		nr_pages = move_freepages_block(zone, page, migratetype, NULL);
>  		__mod_zone_freepage_state(zone, nr_pages, migratetype);
>  	}
> -- 
> 2.18.0.huawei.25
> 
>
Thorsten Leemhuis Jan. 30, 2022, 9:24 a.m. UTC | #8
Hi, this is your Linux kernel regression tracker speaking.

On 26.01.22 03:18, Chen Wandun wrote:
> 在 2022/1/26 0:40, Vlastimil Babka 写道:
>> On 1/17/22 15:27, Chen Wandun wrote:
>>> This reverts commit 075782149abff45ee22f27315eced44d02b96779.
>>>
>>> commit 075782149abf ("mm/page_isolation: unset migratetype directly for
>> That's an old -next commit id, it went to mainline as 721fb891ad0b
>> ("mm/page_isolation: unset migratetype directly for non Buddy page")
>>
>>> non Buddy page") will result memory that should in buddy disappear by
>>> mistake. move_freepages_block move all pages in pageblock instead of
>>> pages indicated by input parameter, so if input pages is not in buddy
>>> but other pages in pageblock is in buddy, it will result in page out of
>>> control.
>>>
>>> Reported-by: "kernelci.org bot" <bot@kernelci.org>
>>> Signed-off-by: Chen Wandun <chenwandun@huawei.com>
>> Acked-by: Vlastimil Babka <vbabka@suse.cz>
>>
>> #regzbot ^introduced: 721fb891ad0b

Thx for getting regzbot involved, much appreciated.

>> There should better be also:
>>
>> Fixes: 721fb891ad0b ("mm/page_isolation: unset migratetype directly
>> for non
>> Buddy page")
>>
>> Especially as that commit had a (inadequate, IMHO, for an optimization)
>> Fixes: tag and could end up being backported somewhere without the
>> followup
>> fix/revert.
>
> thanks, I will send v2

Just wondering:

Andrew, I don't see this patch in the list of changes you sent to Linus
yesterday. Shouldn't it be in there due to above reason alone? And there
is another reason: it seems to be an issue people actually hit, as
Guenter mentioned in this thread. It thus complicates things for those
that want to help testing pre-releases.

Or am I missing something/asking too much in this case?

BTW, let's tell regzbot about v2:

#regzbot monitor:
https://lore.kernel.org/all/20220126024436.13921-1-chenwandun@huawei.com/

Ciao, Thorsten

>>> ---
>>>   mm/page_isolation.c | 2 +-
>>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/mm/page_isolation.c b/mm/page_isolation.c
>>> index 6a0ddda6b3c5..f67c4c70f17f 100644
>>> --- a/mm/page_isolation.c
>>> +++ b/mm/page_isolation.c
>>> @@ -115,7 +115,7 @@ static void unset_migratetype_isolate(struct page
>>> *page, unsigned migratetype)
>>>        * onlining - just onlined memory won't immediately be
>>> considered for
>>>        * allocation.
>>>        */
>>> -    if (!isolated_page && PageBuddy(page)) {
>>> +    if (!isolated_page) {
>>>           nr_pages = move_freepages_block(zone, page, migratetype,
>>> NULL);
>>>           __mod_zone_freepage_state(zone, nr_pages, migratetype);
>>>       }
>> .
> 
> 
>
Andrew Morton Jan. 31, 2022, 10:39 p.m. UTC | #9
On Sun, 30 Jan 2022 10:24:43 +0100 Thorsten Leemhuis <regressions@leemhuis.info> wrote:

> Andrew, I don't see this patch in the list of changes you sent to Linus
> yesterday. Shouldn't it be in there due to above reason alone? And there
> is another reason: it seems to be an issue people actually hit, as
> Guenter mentioned in this thread. It thus complicates things for those
> that want to help testing pre-releases.

I prefer to give fixes some time in linux-next before upstreaming them.
At least a day, worst case.  So I have this patch in this week's pile.
diff mbox series

Patch

diff --git a/mm/page_isolation.c b/mm/page_isolation.c
index 6a0ddda6b3c5..f67c4c70f17f 100644
--- a/mm/page_isolation.c
+++ b/mm/page_isolation.c
@@ -115,7 +115,7 @@  static void unset_migratetype_isolate(struct page *page, unsigned migratetype)
 	 * onlining - just onlined memory won't immediately be considered for
 	 * allocation.
 	 */
-	if (!isolated_page && PageBuddy(page)) {
+	if (!isolated_page) {
 		nr_pages = move_freepages_block(zone, page, migratetype, NULL);
 		__mod_zone_freepage_state(zone, nr_pages, migratetype);
 	}