Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

uprobes: use kmap_local_page() for temporary page mappings

Replace deprecated kmap_atomic() with kmap_local_page().

Signed-off-by: Keke Ming <ming.jvle@gmail.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Oleg Nesterov <oleg@redhat.com>
Link: https://patch.msgid.link/20260103084243.195125-6-ming.jvle@gmail.com

authored by

Keke Ming and committed by
Peter Zijlstra
a491c02c 1752a1ad

+6 -6
+6 -6
kernel/events/uprobes.c
··· 179 179 180 180 void uprobe_copy_from_page(struct page *page, unsigned long vaddr, void *dst, int len) 181 181 { 182 - void *kaddr = kmap_atomic(page); 182 + void *kaddr = kmap_local_page(page); 183 183 memcpy(dst, kaddr + (vaddr & ~PAGE_MASK), len); 184 - kunmap_atomic(kaddr); 184 + kunmap_local(kaddr); 185 185 } 186 186 187 187 static void copy_to_page(struct page *page, unsigned long vaddr, const void *src, int len) 188 188 { 189 - void *kaddr = kmap_atomic(page); 189 + void *kaddr = kmap_local_page(page); 190 190 memcpy(kaddr + (vaddr & ~PAGE_MASK), src, len); 191 - kunmap_atomic(kaddr); 191 + kunmap_local(kaddr); 192 192 } 193 193 194 194 static int verify_opcode(struct page *page, unsigned long vaddr, uprobe_opcode_t *insn, ··· 323 323 return ret == 0 ? -EBUSY : ret; 324 324 } 325 325 326 - kaddr = kmap_atomic(page); 326 + kaddr = kmap_local_page(page); 327 327 ptr = kaddr + (vaddr & ~PAGE_MASK); 328 328 329 329 if (unlikely(*ptr + d < 0)) { ··· 336 336 *ptr += d; 337 337 ret = 0; 338 338 out: 339 - kunmap_atomic(kaddr); 339 + kunmap_local(kaddr); 340 340 put_page(page); 341 341 return ret; 342 342 }