Skip to content

Commit 8c28d52

Browse files
Fuad Tabbawilldeacon
authored andcommitted
arm64: sync_icache_aliases to take end parameter instead of size
To be consistent with other functions with similar names and functionality in cacheflush.h, cache.S, and cachetlb.rst, change to specify the range in terms of start and end, as opposed to start and size. No functional change intended. Reported-by: Will Deacon <will@kernel.org> Acked-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Fuad Tabba <tabba@google.com> Reviewed-by: Ard Biesheuvel <ardb@kernel.org> Link: https://lore.kernel.org/r/20210524083001.2586635-17-tabba@google.com Signed-off-by: Will Deacon <will@kernel.org>
1 parent 406d7d4 commit 8c28d52

3 files changed

Lines changed: 12 additions & 13 deletions

File tree

arch/arm64/include/asm/cacheflush.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ extern void __clean_dcache_area_poc(unsigned long start, unsigned long end);
6464
extern void __clean_dcache_area_pop(unsigned long start, unsigned long end);
6565
extern void __clean_dcache_area_pou(unsigned long start, unsigned long end);
6666
extern long __flush_cache_user_range(unsigned long start, unsigned long end);
67-
extern void sync_icache_aliases(void *kaddr, unsigned long len);
67+
extern void sync_icache_aliases(unsigned long start, unsigned long end);
6868

6969
static inline void flush_icache_range(unsigned long start, unsigned long end)
7070
{

arch/arm64/kernel/probes/uprobes.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ void arch_uprobe_copy_ixol(struct page *page, unsigned long vaddr,
2121
memcpy(dst, src, len);
2222

2323
/* flush caches (dcache/icache) */
24-
sync_icache_aliases(dst, len);
24+
sync_icache_aliases((unsigned long)dst, (unsigned long)dst + len);
2525

2626
kunmap_atomic(xol_page_kaddr);
2727
}

arch/arm64/mm/flush.c

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,28 +14,25 @@
1414
#include <asm/cache.h>
1515
#include <asm/tlbflush.h>
1616

17-
void sync_icache_aliases(void *kaddr, unsigned long len)
17+
void sync_icache_aliases(unsigned long start, unsigned long end)
1818
{
19-
unsigned long addr = (unsigned long)kaddr;
20-
2119
if (icache_is_aliasing()) {
22-
__clean_dcache_area_pou(kaddr, kaddr + len);
20+
__clean_dcache_area_pou(start, end);
2321
__flush_icache_all();
2422
} else {
2523
/*
2624
* Don't issue kick_all_cpus_sync() after I-cache invalidation
2725
* for user mappings.
2826
*/
29-
__flush_icache_range(addr, addr + len);
27+
__flush_icache_range(start, end);
3028
}
3129
}
3230

33-
static void flush_ptrace_access(struct vm_area_struct *vma, struct page *page,
34-
unsigned long uaddr, void *kaddr,
35-
unsigned long len)
31+
static void flush_ptrace_access(struct vm_area_struct *vma, unsigned long start,
32+
unsigned long end)
3633
{
3734
if (vma->vm_flags & VM_EXEC)
38-
sync_icache_aliases(kaddr, len);
35+
sync_icache_aliases(start, end);
3936
}
4037

4138
/*
@@ -48,15 +45,17 @@ void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
4845
unsigned long len)
4946
{
5047
memcpy(dst, src, len);
51-
flush_ptrace_access(vma, page, uaddr, dst, len);
48+
flush_ptrace_access(vma, (unsigned long)dst, (unsigned long)dst + len);
5249
}
5350

5451
void __sync_icache_dcache(pte_t pte)
5552
{
5653
struct page *page = pte_page(pte);
5754

5855
if (!test_bit(PG_dcache_clean, &page->flags)) {
59-
sync_icache_aliases(page_address(page), page_size(page));
56+
sync_icache_aliases((unsigned long)page_address(page),
57+
(unsigned long)page_address(page) +
58+
page_size(page));
6059
set_bit(PG_dcache_clean, &page->flags);
6160
}
6261
}

0 commit comments

Comments
 (0)