mm: Introduce untagged_addr_remote()
authorKirill A. Shutemov <kirill.shutemov@linux.intel.com>
Sun, 12 Mar 2023 11:26:00 +0000 (14:26 +0300)
committerDave Hansen <dave.hansen@linux.intel.com>
Thu, 16 Mar 2023 20:08:39 +0000 (13:08 -0700)
commit428e106ae1ad4e45d3fd6978a753db475d0d0ec9
tree4bbc741cbd795dadc9f7543b8aa219cd3759db25
parent82721d8b25d76c5a6f4c6cf4ce4e5b33788820a1
mm: Introduce untagged_addr_remote()

untagged_addr() removes tags/metadata from the address and brings it to
the canonical form. The helper is implemented on arm64 and sparc. Both of
them do untagging based on global rules.

However, Linear Address Masking (LAM) on x86 introduces per-process
settings for untagging. As a result, untagged_addr() is now only
suitable for untagging addresses for the current proccess.

The new helper untagged_addr_remote() has to be used when the address
targets remote process. It requires the mmap lock for target mm to be
taken.

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Tested-by: Alexander Potapenko <glider@google.com>
Link: https://lore.kernel.org/all/20230312112612.31869-6-kirill.shutemov%40linux.intel.com
arch/sparc/include/asm/uaccess_64.h
drivers/vfio/vfio_iommu_type1.c
fs/proc/task_mmu.c
include/linux/mm.h
include/linux/uaccess.h
mm/gup.c
mm/madvise.c
mm/migrate.c