All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yu Xu <xuyu@linux.alibaba.com>
To: "HORIGUCHI NAOYA(堀口 直也)" <naoya.horiguchi@nec.com>
Cc: "linux-mm@kvack.org" <linux-mm@kvack.org>,
	"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
	"shy828301@gmail.com" <shy828301@gmail.com>
Subject: Re: [PATCH 2/2] mm/huge_memory: do not overkill when splitting huge_zero_page
Date: Wed, 27 Apr 2022 15:37:03 +0800	[thread overview]
Message-ID: <33a3445c-0f13-a471-d1a3-fcf1059dab49@linux.alibaba.com> (raw)
In-Reply-To: <20220427071231.GA3912770@hori.linux.bs1.fc.nec.co.jp>

On 4/27/22 3:12 PM, HORIGUCHI NAOYA(堀口 直也) wrote:
> On Wed, Apr 27, 2022 at 02:10:17PM +0800, Xu Yu wrote:
>> Kernel panic when injecting memory_failure for the global
>> huge_zero_page, when CONFIG_DEBUG_VM is enabled, as follows.
>>
>>    Injecting memory failure for pfn 0x109ff9 at process virtual address 0x20ff9000
>>    page:00000000fb053fc3 refcount:2 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x109e00
>>    head:00000000fb053fc3 order:9 compound_mapcount:0 compound_pincount:0
>>    flags: 0x17fffc000010001(locked|head|node=0|zone=2|lastcpupid=0x1ffff)
>>    raw: 017fffc000010001 0000000000000000 dead000000000122 0000000000000000
>>    raw: 0000000000000000 0000000000000000 00000002ffffffff 0000000000000000
>>    page dumped because: VM_BUG_ON_PAGE(is_huge_zero_page(head))
>>    ------------[ cut here ]------------
>>    kernel BUG at mm/huge_memory.c:2499!
>>    invalid opcode: 0000 [#1] PREEMPT SMP PTI
>>    CPU: 6 PID: 553 Comm: split_bug Not tainted 5.18.0-rc1+ #11
>>    Hardware name: Alibaba Cloud Alibaba Cloud ECS, BIOS 3288b3c 04/01/2014
>>    RIP: 0010:split_huge_page_to_list+0x66a/0x880
>>    Code: 84 9b fb ff ff 48 8b 7c 24 08 31 f6 e8 9f 5d 2a 00 b8 b8 02 00 00 e9 e8 fb ff ff 48 c7 c6 e8 47 3c 82 4c b
>>    RSP: 0018:ffffc90000dcbdf8 EFLAGS: 00010246
>>    RAX: 000000000000003c RBX: 0000000000000001 RCX: 0000000000000000
>>    RDX: 0000000000000000 RSI: ffffffff823e4c4f RDI: 00000000ffffffff
>>    RBP: ffff88843fffdb40 R08: 0000000000000000 R09: 00000000fffeffff
>>    R10: ffffc90000dcbc48 R11: ffffffff82d68448 R12: ffffea0004278000
>>    R13: ffffffff823c6203 R14: 0000000000109ff9 R15: ffffea000427fe40
>>    FS:  00007fc375a26740(0000) GS:ffff88842fd80000(0000) knlGS:0000000000000000
>>    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>>    CR2: 00007fc3757c9290 CR3: 0000000102174006 CR4: 00000000003706e0
>>    DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
>>    DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
>>    Call Trace:
>>    try_to_split_thp_page+0x3a/0x130
>>    memory_failure+0x128/0x800
>>    madvise_inject_error.cold+0x8b/0xa1
>>    __x64_sys_madvise+0x54/0x60
>>    do_syscall_64+0x35/0x80
>>    entry_SYSCALL_64_after_hwframe+0x44/0xae
>>    RIP: 0033:0x7fc3754f8bf9
>>    Code: 01 00 48 81 c4 80 00 00 00 e9 f1 fe ff ff 0f 1f 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 8
>>    RSP: 002b:00007ffeda93a1d8 EFLAGS: 00000217 ORIG_RAX: 000000000000001c
>>    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fc3754f8bf9
>>    RDX: 0000000000000064 RSI: 0000000000003000 RDI: 0000000020ff9000
>>    RBP: 00007ffeda93a200 R08: 0000000000000000 R09: 0000000000000000
>>    R10: 00000000ffffffff R11: 0000000000000217 R12: 0000000000400490
>>    R13: 00007ffeda93a2e0 R14: 0000000000000000 R15: 0000000000000000
>>
>> We think that raising BUG is overkilling for splitting huge_zero_page,
>> the huge_zero_page can't be met from normal paths other than memory
>> failure, but memory failure is a valid caller. So we tend to replace the
>> BUG to WARN + returning -EBUSY, and thus the panic above won't happen
>> again.
>>
>> Suggested-by: Yang Shi <shy828301@gmail.com>
>> Cc: Naoya Horiguchi <naoya.horiguchi@nec.com>
>> Signed-off-by: Xu Yu <xuyu@linux.alibaba.com>
> 
> Reviewed-by: Naoya Horiguchi <naoya.horiguchi@nec.com>
> 
> What to do on -stable?
> The older version was backported to 5.15.z and 5.17.z, so if you choose
> to send this to stable, 1/2 should be also sent to stable.

IMHO, I would like to view v3 as an optimization of v2, since the older version
is also capable of fixing this bug accurately. Since the Fixes tag has already
been added to the older version, let's keep -stable to use the older version.

Anyway, the older version is not bad. :)


> 
> Thanks,
> Naoya Horiguchi

-- 
Thanks,
Yu


  reply	other threads:[~2022-04-27  7:37 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-27  6:10 [PATCH 0/2] mm/memory-failure: rework fix on huge_zero_page splitting Xu Yu
2022-04-27  6:10 ` [PATCH 1/2] Revert "mm/memory-failure.c: skip huge_zero_page in memory_failure()" Xu Yu
2022-04-27 21:13   ` Yang Shi
2022-04-28  2:23   ` Miaohe Lin
2022-04-27  6:10 ` [PATCH 2/2] mm/huge_memory: do not overkill when splitting huge_zero_page Xu Yu
2022-04-27  7:12   ` HORIGUCHI NAOYA(堀口 直也)
2022-04-27  7:37     ` Yu Xu [this message]
2022-04-27 19:00     ` Andrew Morton
2022-04-27  9:01   ` kernel test robot
2022-04-27  9:48     ` Yu Xu
2022-04-27  9:48       ` Yu Xu
2022-04-27  9:36   ` kernel test robot
2022-04-27  9:44   ` [PATCH 2/2 RESEND] " Xu Yu
2022-04-27 21:15     ` Yang Shi
2022-04-28  2:25     ` Miaohe Lin
2022-04-28 16:04     ` David Hildenbrand
2022-04-28 17:18       ` Yang Shi
2022-04-28  1:59   ` [PATCH 2/2] " kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=33a3445c-0f13-a471-d1a3-fcf1059dab49@linux.alibaba.com \
    --to=xuyu@linux.alibaba.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-mm@kvack.org \
    --cc=naoya.horiguchi@nec.com \
    --cc=shy828301@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.