linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: David Hildenbrand <david@redhat.com>
To: Peter Xu <peterx@redhat.com>,
	Mikhail Gavrilov <mikhail.v.gavrilov@gmail.com>
Cc: Pavel Tatashin <pasha.tatashin@soleen.com>,
	axelrasmussen@google.com, nadav.amit@gmail.com,
	Andrew Morton <akpm@linux-foundation.org>,
	Linux Memory Management List <linux-mm@kvack.org>,
	Linux List Kernel Mailing <linux-kernel@vger.kernel.org>
Subject: Re: 6.10/bisected/regression - commit 8430557fc584 cause warning at mm/page_table_check.c:198 __page_table_check_ptes_set+0x306
Date: Wed, 22 May 2024 09:48:51 +0200	[thread overview]
Message-ID: <a3d54407-87aa-4f59-adac-c9b79fe1ecef@redhat.com> (raw)
In-Reply-To: <Zk0h0V8kvZRKu6F4@x1n>

On 22.05.24 00:36, Peter Xu wrote:
> On Wed, May 22, 2024 at 03:21:04AM +0500, Mikhail Gavrilov wrote:
>> On Wed, May 22, 2024 at 2:37 AM Peter Xu <peterx@redhat.com> wrote:
>>> Hmm I still cannot reproduce.  Weird.
>>>
>>> Would it be possible for you to identify which line in debug_vm_pgtable.c
>>> triggered that issue?
>>>
>>> I think it should be some set_pte_at() but I'm not sure, as there aren't a
>>> lot and all of them look benign so far.  It could be that I missed
>>> something important.
>>
>> I hope it's helps:
> 
> Thanks for offering this, it's just that it doesn't look coherent with what
> was reported for some reason.
> 
>>
>>> sh /usr/src/kernels/(uname -r)/scripts/faddr2line /lib/debug/lib/modules/(uname -r)/vmlinux debug_vm_pgtable+0x1c04
>> debug_vm_pgtable+0x1c04/0x3360:
>> native_ptep_get_and_clear at arch/x86/include/asm/pgtable_64.h:94
>> (inlined by) ptep_get_and_clear at arch/x86/include/asm/pgtable.h:1262
>> (inlined by) ptep_clear at include/linux/pgtable.h:509
> 
> This is a pte_clear(), and pte_clear() shouldn't even do the set() checks,
> and shouldn't stumble over what I added.
> 
> IOW, it doesn't match with the real stack dump previously:
> 
> [    5.581003]  ? __page_table_check_ptes_set+0x306/0x3c0
> [    5.581274]  ? __pfx___page_table_check_ptes_set+0x10/0x10
> [    5.581544]  ? __pfx_check_pgprot+0x10/0x10
> [    5.581806]  set_ptes.constprop.0+0x66/0xd0
> [    5.582072]  ? __pfx_set_ptes.constprop.0+0x10/0x10
> [    5.582333]  ? __pfx_pte_val+0x10/0x10
> [    5.582595]  debug_vm_pgtable+0x1c04/0x3360
> 

Staring at pte_clear_tests():

#ifndef CONFIG_RISCV
	pte = __pte(pte_val(pte) | RANDOM_ORVALUE);
#endif
	set_pte_at(args->mm, args->vaddr, args->ptep, pte);

So we set random PTE bits, probably setting the present, uffd and write 
bit at the same time. That doesn't make too much sense when we want to 
perform that such combinations cannot exist.

In pmd_clear_tests() and friends we use WRITE_ONCE() instead, so there 
we don't run into trouble.

-- 
Cheers,

David / dhildenb



  parent reply	other threads:[~2024-05-22  7:49 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-21 20:17 Mikhail Gavrilov
2024-05-21 20:44 ` Peter Xu
2024-05-21 20:48   ` Mikhail Gavrilov
2024-05-21 21:37     ` Peter Xu
2024-05-21 22:21       ` Mikhail Gavrilov
     [not found]         ` <Zk0h0V8kvZRKu6F4@x1n>
2024-05-21 23:26           ` Mikhail Gavrilov
2024-05-22  7:48           ` David Hildenbrand [this message]
2024-05-22 15:18             ` Peter Xu
2024-05-22 15:34               ` David Hildenbrand
2024-05-22 16:10                 ` Peter Xu
2024-05-22 16:13                   ` Peter Xu
2024-05-22 20:25                   ` David Hildenbrand
2024-05-23  6:34                   ` Mikhail Gavrilov
2024-05-23 13:19                     ` Peter Xu

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=a3d54407-87aa-4f59-adac-c9b79fe1ecef@redhat.com \
    --to=david@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=axelrasmussen@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mikhail.v.gavrilov@gmail.com \
    --cc=nadav.amit@gmail.com \
    --cc=pasha.tatashin@soleen.com \
    --cc=peterx@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox