Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f00a75c0 authored by Russell King's avatar Russell King
Browse files

ARM: Pass VMA to copy_user_highpage() implementations



Our copy_user_highpage() implementations may require cache maintainence.
Ensure that implementations have all necessary details to perform this
maintainence.

Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 8a0382f6
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -117,11 +117,12 @@
#endif

struct page;
struct vm_area_struct;

struct cpu_user_fns {
	void (*cpu_clear_user_highpage)(struct page *page, unsigned long vaddr);
	void (*cpu_copy_user_highpage)(struct page *to, struct page *from,
			unsigned long vaddr);
			unsigned long vaddr, struct vm_area_struct *vma);
};

#ifdef MULTI_USER
@@ -137,7 +138,7 @@ extern struct cpu_user_fns cpu_user;

extern void __cpu_clear_user_highpage(struct page *page, unsigned long vaddr);
extern void __cpu_copy_user_highpage(struct page *to, struct page *from,
			unsigned long vaddr);
			unsigned long vaddr, struct vm_area_struct *vma);
#endif

#define clear_user_highpage(page,vaddr)		\
@@ -145,7 +146,7 @@ extern void __cpu_copy_user_highpage(struct page *to, struct page *from,

#define __HAVE_ARCH_COPY_USER_HIGHPAGE
#define copy_user_highpage(to,from,vaddr,vma)	\
	__cpu_copy_user_highpage(to, from, vaddr)
	__cpu_copy_user_highpage(to, from, vaddr, vma)

#define clear_page(page)	memset((void *)(page), 0, PAGE_SIZE)
extern void copy_page(void *to, const void *from);
+1 −1
Original line number Diff line number Diff line
@@ -68,7 +68,7 @@ feroceon_copy_user_page(void *kto, const void *kfrom)
}

void feroceon_copy_user_highpage(struct page *to, struct page *from,
	unsigned long vaddr)
	unsigned long vaddr, struct vm_area_struct *vma)
{
	void *kto, *kfrom;

+1 −1
Original line number Diff line number Diff line
@@ -38,7 +38,7 @@ v3_copy_user_page(void *kto, const void *kfrom)
}

void v3_copy_user_highpage(struct page *to, struct page *from,
	unsigned long vaddr)
	unsigned long vaddr, struct vm_area_struct *vma)
{
	void *kto, *kfrom;

+1 −1
Original line number Diff line number Diff line
@@ -69,7 +69,7 @@ mc_copy_user_page(void *from, void *to)
}

void v4_mc_copy_user_highpage(struct page *to, struct page *from,
	unsigned long vaddr)
	unsigned long vaddr, struct vm_area_struct *vma)
{
	void *kto = kmap_atomic(to, KM_USER1);

+1 −1
Original line number Diff line number Diff line
@@ -48,7 +48,7 @@ v4wb_copy_user_page(void *kto, const void *kfrom)
}

void v4wb_copy_user_highpage(struct page *to, struct page *from,
	unsigned long vaddr)
	unsigned long vaddr, struct vm_area_struct *vma)
{
	void *kto, *kfrom;

Loading