From: Catalin Marinas <catalin.marinas@arm.com>
To: Dan Carpenter <dan.carpenter@linaro.org>
Cc: Anshuman Khandual <anshuman.khandual@arm.com>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [bug report] arm64/mm: Clear PXX_TYPE_MASK and set PXD_TYPE_SECT in [pmd|pud]_mkhuge()
Date: Fri, 14 Mar 2025 17:52:04 +0000 [thread overview]
Message-ID: <Z9RsxL98s23mvqJa@arm.com> (raw)
In-Reply-To: <d7902504-1ed4-452f-9b08-148f6b8b69fd@stanley.mountain>
On Fri, Mar 14, 2025 at 01:54:01PM +0300, Dan Carpenter wrote:
> Hello Anshuman Khandual,
>
> Commit 1601df9e366e ("arm64/mm: Clear PXX_TYPE_MASK and set
> PXD_TYPE_SECT in [pmd|pud]_mkhuge()") from Feb 21, 2025 (linux-next),
> leads to the following (unpublished) Smatch static checker warning:
>
> arch/arm64/include/asm/pgtable.h:587 pmd_mkhuge() warn: odd binop '0x1 & 0xfffffffffffffffe'
> arch/arm64/include/asm/pgtable.h:626 pud_mkhuge() warn: odd binop '0x1 & 0xfffffffffffffffe'
>
> arch/arm64/include/asm/pgtable.h
> 579 static inline pmd_t pmd_mkhuge(pmd_t pmd)
> 580 {
> 581 /*
> 582 * It's possible that the pmd is present-invalid on entry
> 583 * and in that case it needs to remain present-invalid on
> 584 * exit. So ensure the VALID bit does not get modified.
> 585 */
> 586 pmdval_t mask = PMD_TYPE_MASK & ~PTE_VALID;
> --> 587 pmdval_t val = PMD_TYPE_SECT & ~PTE_VALID;
>
> This is "1 & ~1". I see the comment, but I'm too stupid to know even
> after reading he comment whether it's intentional or not. :P
>
> 588
> 589 return __pmd((pmd_val(pmd) & ~mask) | val);
> 590 }
Prior to the above commit, the code was:
#define pmd_mkhuge(pmd) (__pmd(pmd_val(pmd) & ~PMD_TABLE_BIT))
So just clearing a bit. That's why the reworked code has val 0 in the
current configuration. This may change with support for 128-bit PTEs
though, different format.
The comment is about preserving the PTE_VALID bit in the original pmd
value, so it's masked out of both mask and val.
It's good that smatch catches these though. Any way to mark a false
positive?
--
Catalin
next prev parent reply other threads:[~2025-03-14 18:09 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-14 10:54 [bug report] arm64/mm: Clear PXX_TYPE_MASK and set PXD_TYPE_SECT in [pmd|pud]_mkhuge() Dan Carpenter
2025-03-14 17:52 ` Catalin Marinas [this message]
2025-03-15 8:28 ` Dan Carpenter
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=Z9RsxL98s23mvqJa@arm.com \
--to=catalin.marinas@arm.com \
--cc=anshuman.khandual@arm.com \
--cc=dan.carpenter@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
/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;
as well as URLs for NNTP newsgroup(s).