<div dir="ltr">Hi <span class="gmail_default" style="font-size:small">Naoya and Linux-MMers,</span><br><br>The LTP/move_page12 V2 triggers SIGBUS in the kernel-v5.2.3 testing. <br><a href="https://github.com/wangli5665/ltp/blob/master/testcases/kernel/syscalls/move_pages/move_pages12.c">https://github.com/wangli5665/ltp/blob/master/testcases/kernel/syscalls/move_pages/move_pages12.c<br></a><br>It seems like <span class="gmail_default" style="font-size:small">the</span> retry mmap() triggers SIGBUS while doing the<span class="gmail_default" style="font-size:small"> </span>numa_move_pages() in background. That is very similar to the kernel<span class="gmail_default"> </span>bug which was mentioned by commit 6bc9b56433b76e40d(mm: fix race on<span class="gmail_default"> </span>soft-offlining )<span class="gmail_default" style="font-size:small">:</span> A race condition between soft offline and<span class="gmail_default"> </span>hugetlb_fault which causes unexpected process SIGBUS killing.<div><br>I'm not sure if that below <span class="gmail_default" style="font-size:small">patch </span>is making sene to memory-failures.c, but <span class="gmail_default" style="font-size:small">after </span>building a <span class="gmail_default" style="font-size:small">new </span>kernel-5.2.3 with <span class="gmail_default" style="font-size:small">this change</span>, the problem <span class="gmail_default" style="font-size:small">can NOT be reproduced</span>. </div><div><br></div><div>Any comments?<br></div><div><br>----------------------------------<br>--- a/mm/memory-failure.c<br>+++ b/mm/memory-failure.c<br>@@ -1695,15 +1695,16 @@ static int soft_offline_huge_page(struct page *page, int flags)<br>        unlock_page(hpage);<br><br>        ret = isolate_huge_page(hpage, &pagelist);<br>+       if (!ret) {<br>+               pr_info("soft offline: %#lx hugepage failed to isolate\n", pfn);<br>+               return -EBUSY;<br>+       }<br>+<br>        /*<br>         * get_any_page() and isolate_huge_page() takes a refcount each,<br>         * so need to drop one here.<br>         */<br>        put_hwpoison_page(hpage);<br>-       if (!ret) {<br>-               pr_info("soft offline: %#lx hugepage failed to isolate\n", pfn);<br>-               return -EBUSY;<br>-       }<br><br><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default" style="font-size:small">----- test on kernel-v5.2.3 ------</div># ./move_pages12<br>tst_test.c:1100: INFO: Timeout per run is 0h 05m 00s<br>move_pages12.c:251: INFO: Free RAM 194212832 kB<br>move_pages12.c:269: INFO: Increasing 2048kB hugepages pool on node 0 to 4<br>move_pages12.c:279: INFO: Increasing 2048kB hugepages pool on node 1 to 6<br>move_pages12.c:195: INFO: Allocating and freeing 4 hugepages on node 0<br>move_pages12.c:195: INFO: Allocating and freeing 4 hugepages on node 1<br>move_pages12.c:185: PASS: Bug not reproduced<br>tst_test.c:1145: BROK: Test killed by SIGBUS!<br>move_pages12.c:114: FAIL: move_pages failed: ESRCH<div><br></div><div><div class="gmail_default" style="font-size:small">----- test on kernel-v5.2.3  + above patch------</div></div><div class="gmail_default" style="font-size:small"># ./move_pages12 </div>tst_test.c:1100: INFO: Timeout per run is 0h 05m 00s<br>move_pages12.c:252: INFO: Free RAM 64780164 kB<br>move_pages12.c:270: INFO: Increasing 2048kB hugepages pool on node 0 to 7<br>move_pages12.c:280: INFO: Increasing 2048kB hugepages pool on node 1 to 10<br>move_pages12.c:196: INFO: Allocating and freeing 4 hugepages on node 0<br>move_pages12.c:196: INFO: Allocating and freeing 4 hugepages on node 1<br>move_pages12.c:186: PASS: Bug not reproduced<br>move_pages12.c:186: PASS: Bug not reproduced<br><div class="gmail_default" style="font-size:small"></div>--<br>Regards,<br>Li Wang</div></div>