All of lore.kernel.org
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@linux-foundation.org>
To: linux-kernel@vger.kernel.org
Cc: linux-tip-commits@vger.kernel.org,
	Dave Hansen <dave.hansen@intel.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Michael Roth <michael.roth@amd.com>,
	Ingo Molnar <mingo@kernel.org>, Andy Lutomirski <luto@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Rik van Riel <riel@surriel.com>,
	x86@kernel.org
Subject: Re: [tip: x86/mm] x86/mm: Ensure input to pfn_to_kaddr() is treated as a 64-bit type
Date: Thu, 23 Nov 2023 11:00:33 -0800	[thread overview]
Message-ID: <CAHk-=wg=JDhLdEry=U1-iO1foL_j5T37qVE6_MEHqvj31HO1Lw@mail.gmail.com> (raw)
In-Reply-To: <170073547546.398.2637807593174571076.tip-bot2@tip-bot2>

On Thu, 23 Nov 2023 at 02:31, tip-bot2 for Michael Roth
<tip-bot2@linutronix.de> wrote:
>
> On 64-bit platforms, the pfn_to_kaddr() macro requires that the input
> value is 64 bits in order to ensure that valid address bits don't get
> lost when shifting that input by PAGE_SHIFT to calculate the physical
> address to provide a virtual address for.

Bah. The commit is obviously fine, but can we please just get rid of
that broken pfn_to_kaddr() thing entirely?

It's a bogus mis-spelling of pfn_to_virt(), and I don't know why that
horrid thing exists. In *all* other situations we talk about "virt"
for kernel virtual addresses, I don't know where that horrid "kaddr"
came from (ie "virt_to_page()" and friends).

Most notably, we have "virt_to_pfn()" being quite commonly used. We
don't even have that kaddr_to_pfn(), which just shows *how* bogus this
whole "pfn_to_kaddr()" crud is.

The good news is that there aren't a ton of users. Anybody willing to
just do a search-and-replace and get rid of this pointless and wrong
thing?

Using "pfn_to_virt()" has the added advantage that we have a generic
implementation of it that isn't duplicated pointlessly for N
architectures, and that didn't have this bug:

  static inline void *pfn_to_virt(unsigned long pfn)
  {
        return __va(pfn) << PAGE_SHIFT;
  }
  #define pfn_to_virt pfn_to_virt

Hmm?

Amusingly (or sadly), we have s390 holding up the flag of sanity, and having

    #define pfn_to_kaddr(pfn)  pfn_to_virt(pfn)

and then we'd only need to fix the hexagon version of that macro
(since Hexagon made its own version, with the old bug - but I guess
Hexagon is 32-bit only and hopefully never grows 64-bit (??) so maybe
nobody cares).

           Linus

      reply	other threads:[~2023-11-23 19:00 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-22 16:37 [PATCH v3] x86: Ensure input to pfn_to_kaddr() is treated as a 64-bit type Michael Roth
2023-11-23 10:15 ` Ingo Molnar
2023-11-23 10:31 ` [tip: x86/mm] x86/mm: " tip-bot2 for Michael Roth
2023-11-23 19:00   ` Linus Torvalds [this message]

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='CAHk-=wg=JDhLdEry=U1-iO1foL_j5T37qVE6_MEHqvj31HO1Lw@mail.gmail.com' \
    --to=torvalds@linux-foundation.org \
    --cc=dave.hansen@intel.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=luto@kernel.org \
    --cc=michael.roth@amd.com \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=riel@surriel.com \
    --cc=x86@kernel.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 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.