aboutsummaryrefslogtreecommitdiff
path: root/arch/arm64/kernel/patching.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2024-12-12 14:49:35 +0100
committerTakashi Iwai <tiwai@suse.de>2024-12-12 14:49:35 +0100
commit7b26bc6582b13a52a42a4a9765e8f30d58a81198 (patch)
tree80737d9bb4abf42b8e2061a5edacdfbe5ac9b7d6 /arch/arm64/kernel/patching.c
parentb2e538a9827dd04ab5273bf4be8eb2edb84357b0 (diff)
parent255cc582e6e16191a20d54bcdbca6c91d3e90c5e (diff)
downloadlinux-7b26bc6582b13a52a42a4a9765e8f30d58a81198.tar.gz
linux-7b26bc6582b13a52a42a4a9765e8f30d58a81198.tar.bz2
linux-7b26bc6582b13a52a42a4a9765e8f30d58a81198.zip
Merge tag 'asoc-fix-v6.12-rc2' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Fixes for v6.13 A small pile of driver specific fixes, all quite small and not particularly major.
Diffstat (limited to 'arch/arm64/kernel/patching.c')
-rw-r--r--arch/arm64/kernel/patching.c25
1 files changed, 11 insertions, 14 deletions
diff --git a/arch/arm64/kernel/patching.c b/arch/arm64/kernel/patching.c
index 7f99723fbb8c..1041bc67a3ee 100644
--- a/arch/arm64/kernel/patching.c
+++ b/arch/arm64/kernel/patching.c
@@ -30,20 +30,17 @@ static bool is_image_text(unsigned long addr)
static void __kprobes *patch_map(void *addr, int fixmap)
{
- unsigned long uintaddr = (uintptr_t) addr;
- bool image = is_image_text(uintaddr);
- struct page *page;
-
- if (image)
- page = phys_to_page(__pa_symbol(addr));
- else if (IS_ENABLED(CONFIG_EXECMEM))
- page = vmalloc_to_page(addr);
- else
- return addr;
-
- BUG_ON(!page);
- return (void *)set_fixmap_offset(fixmap, page_to_phys(page) +
- (uintaddr & ~PAGE_MASK));
+ phys_addr_t phys;
+
+ if (is_image_text((unsigned long)addr)) {
+ phys = __pa_symbol(addr);
+ } else {
+ struct page *page = vmalloc_to_page(addr);
+ BUG_ON(!page);
+ phys = page_to_phys(page) + offset_in_page(addr);
+ }
+
+ return (void *)set_fixmap_offset(fixmap, phys);
}
static void __kprobes patch_unmap(int fixmap)