Commit 50a7ca3c authored by Souptick Joarder's avatar Souptick Joarder Committed by Linus Torvalds

mm: convert return type of handle_mm_fault() caller to vm_fault_t

Use new return type vm_fault_t for fault handler.  For now, this is just
documenting that the function returns a VM_FAULT value rather than an
errno.  Once all instances are converted, vm_fault_t will become a
distinct type.

Ref-> commit 1c8f4220 ("mm: change return type to vm_fault_t")

In this patch all the caller of handle_mm_fault() are changed to return
vm_fault_t type.

Link: http://lkml.kernel.org/r/20180617084810.GA6730@jordon-HP-15-Notebook-PCSigned-off-by: default avatarSouptick Joarder <jrdr.linux@gmail.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Matt Turner <mattst88@gmail.com>
Cc: Vineet Gupta <vgupta@synopsys.com>
Cc: Russell King <linux@armlinux.org.uk>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Will Deacon <will.deacon@arm.com>
Cc: Richard Kuo <rkuo@codeaurora.org>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Michal Simek <monstr@monstr.eu>
Cc: James Hogan <jhogan@kernel.org>
Cc: Ley Foon Tan <lftan@altera.com>
Cc: Jonas Bonn <jonas@southpole.se>
Cc: James E.J. Bottomley <jejb@parisc-linux.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Palmer Dabbelt <palmer@sifive.com>
Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
Cc: David S. Miller <davem@davemloft.net>
Cc: Richard Weinberger <richard@nod.at>
Cc: Guan Xuetao <gxt@pku.edu.cn>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: "Levin, Alexander (Sasha Levin)" <alexander.levin@verizon.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 0882ff91
...@@ -87,7 +87,8 @@ do_page_fault(unsigned long address, unsigned long mmcsr, ...@@ -87,7 +87,8 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
struct vm_area_struct * vma; struct vm_area_struct * vma;
struct mm_struct *mm = current->mm; struct mm_struct *mm = current->mm;
const struct exception_table_entry *fixup; const struct exception_table_entry *fixup;
int fault, si_code = SEGV_MAPERR; int si_code = SEGV_MAPERR;
vm_fault_t fault;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
/* As of EV6, a load into $31/$f31 is a prefetch, and never faults /* As of EV6, a load into $31/$f31 is a prefetch, and never faults
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include <linux/kdebug.h> #include <linux/kdebug.h>
#include <linux/perf_event.h> #include <linux/perf_event.h>
#include <linux/mm_types.h>
#include <asm/pgalloc.h> #include <asm/pgalloc.h>
#include <asm/mmu.h> #include <asm/mmu.h>
...@@ -66,7 +67,8 @@ void do_page_fault(unsigned long address, struct pt_regs *regs) ...@@ -66,7 +67,8 @@ void do_page_fault(unsigned long address, struct pt_regs *regs)
struct task_struct *tsk = current; struct task_struct *tsk = current;
struct mm_struct *mm = tsk->mm; struct mm_struct *mm = tsk->mm;
siginfo_t info; siginfo_t info;
int fault, ret; int ret;
vm_fault_t fault;
int write = regs->ecr_cause & ECR_C_PROTV_STORE; /* ST/EX */ int write = regs->ecr_cause & ECR_C_PROTV_STORE; /* ST/EX */
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
......
...@@ -224,12 +224,12 @@ static inline bool access_error(unsigned int fsr, struct vm_area_struct *vma) ...@@ -224,12 +224,12 @@ static inline bool access_error(unsigned int fsr, struct vm_area_struct *vma)
return vma->vm_flags & mask ? false : true; return vma->vm_flags & mask ? false : true;
} }
static int __kprobes static vm_fault_t __kprobes
__do_page_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr, __do_page_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr,
unsigned int flags, struct task_struct *tsk) unsigned int flags, struct task_struct *tsk)
{ {
struct vm_area_struct *vma; struct vm_area_struct *vma;
int fault; vm_fault_t fault;
vma = find_vma(mm, addr); vma = find_vma(mm, addr);
fault = VM_FAULT_BADMAP; fault = VM_FAULT_BADMAP;
...@@ -264,7 +264,8 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) ...@@ -264,7 +264,8 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
{ {
struct task_struct *tsk; struct task_struct *tsk;
struct mm_struct *mm; struct mm_struct *mm;
int fault, sig, code; int sig, code;
vm_fault_t fault;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
if (notify_page_fault(regs, fsr)) if (notify_page_fault(regs, fsr))
......
...@@ -379,12 +379,12 @@ static void do_bad_area(unsigned long addr, unsigned int esr, struct pt_regs *re ...@@ -379,12 +379,12 @@ static void do_bad_area(unsigned long addr, unsigned int esr, struct pt_regs *re
#define VM_FAULT_BADMAP 0x010000 #define VM_FAULT_BADMAP 0x010000
#define VM_FAULT_BADACCESS 0x020000 #define VM_FAULT_BADACCESS 0x020000
static int __do_page_fault(struct mm_struct *mm, unsigned long addr, static vm_fault_t __do_page_fault(struct mm_struct *mm, unsigned long addr,
unsigned int mm_flags, unsigned long vm_flags, unsigned int mm_flags, unsigned long vm_flags,
struct task_struct *tsk) struct task_struct *tsk)
{ {
struct vm_area_struct *vma; struct vm_area_struct *vma;
int fault; vm_fault_t fault;
vma = find_vma(mm, addr); vma = find_vma(mm, addr);
fault = VM_FAULT_BADMAP; fault = VM_FAULT_BADMAP;
...@@ -427,7 +427,7 @@ static int __kprobes do_page_fault(unsigned long addr, unsigned int esr, ...@@ -427,7 +427,7 @@ static int __kprobes do_page_fault(unsigned long addr, unsigned int esr,
struct task_struct *tsk; struct task_struct *tsk;
struct mm_struct *mm; struct mm_struct *mm;
struct siginfo si; struct siginfo si;
int fault, major = 0; vm_fault_t fault, major = 0;
unsigned long vm_flags = VM_READ | VM_WRITE; unsigned long vm_flags = VM_READ | VM_WRITE;
unsigned int mm_flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int mm_flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
......
...@@ -52,7 +52,7 @@ void do_page_fault(unsigned long address, long cause, struct pt_regs *regs) ...@@ -52,7 +52,7 @@ void do_page_fault(unsigned long address, long cause, struct pt_regs *regs)
struct mm_struct *mm = current->mm; struct mm_struct *mm = current->mm;
int si_signo; int si_signo;
int si_code = SEGV_MAPERR; int si_code = SEGV_MAPERR;
int fault; vm_fault_t fault;
const struct exception_table_entry *fixup; const struct exception_table_entry *fixup;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
......
...@@ -86,7 +86,7 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re ...@@ -86,7 +86,7 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re
struct vm_area_struct *vma, *prev_vma; struct vm_area_struct *vma, *prev_vma;
struct mm_struct *mm = current->mm; struct mm_struct *mm = current->mm;
unsigned long mask; unsigned long mask;
int fault; vm_fault_t fault;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
mask = ((((isr >> IA64_ISR_X_BIT) & 1UL) << VM_EXEC_BIT) mask = ((((isr >> IA64_ISR_X_BIT) & 1UL) << VM_EXEC_BIT)
......
...@@ -70,7 +70,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address, ...@@ -70,7 +70,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
{ {
struct mm_struct *mm = current->mm; struct mm_struct *mm = current->mm;
struct vm_area_struct * vma; struct vm_area_struct * vma;
int fault; vm_fault_t fault;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
pr_debug("do page fault:\nregs->sr=%#x, regs->pc=%#lx, address=%#lx, %ld, %p\n", pr_debug("do page fault:\nregs->sr=%#x, regs->pc=%#lx, address=%#lx, %ld, %p\n",
...@@ -136,7 +136,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address, ...@@ -136,7 +136,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
*/ */
fault = handle_mm_fault(vma, address, flags); fault = handle_mm_fault(vma, address, flags);
pr_debug("handle_mm_fault returns %d\n", fault); pr_debug("handle_mm_fault returns %x\n", fault);
if ((fault & VM_FAULT_RETRY) && fatal_signal_pending(current)) if ((fault & VM_FAULT_RETRY) && fatal_signal_pending(current))
return 0; return 0;
......
...@@ -90,7 +90,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long address, ...@@ -90,7 +90,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long address,
struct mm_struct *mm = current->mm; struct mm_struct *mm = current->mm;
int code = SEGV_MAPERR; int code = SEGV_MAPERR;
int is_write = error_code & ESR_S; int is_write = error_code & ESR_S;
int fault; vm_fault_t fault;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
regs->ear = address; regs->ear = address;
......
...@@ -43,7 +43,7 @@ static void __kprobes __do_page_fault(struct pt_regs *regs, unsigned long write, ...@@ -43,7 +43,7 @@ static void __kprobes __do_page_fault(struct pt_regs *regs, unsigned long write,
struct mm_struct *mm = tsk->mm; struct mm_struct *mm = tsk->mm;
const int field = sizeof(unsigned long) * 2; const int field = sizeof(unsigned long) * 2;
int si_code; int si_code;
int fault; vm_fault_t fault;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
static DEFINE_RATELIMIT_STATE(ratelimit_state, 5 * HZ, 10); static DEFINE_RATELIMIT_STATE(ratelimit_state, 5 * HZ, 10);
......
...@@ -73,7 +73,7 @@ void do_page_fault(unsigned long entry, unsigned long addr, ...@@ -73,7 +73,7 @@ void do_page_fault(unsigned long entry, unsigned long addr,
struct mm_struct *mm; struct mm_struct *mm;
struct vm_area_struct *vma; struct vm_area_struct *vma;
int si_code; int si_code;
int fault; vm_fault_t fault;
unsigned int mask = VM_READ | VM_WRITE | VM_EXEC; unsigned int mask = VM_READ | VM_WRITE | VM_EXEC;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
......
...@@ -47,7 +47,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long cause, ...@@ -47,7 +47,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long cause,
struct task_struct *tsk = current; struct task_struct *tsk = current;
struct mm_struct *mm = tsk->mm; struct mm_struct *mm = tsk->mm;
int code = SEGV_MAPERR; int code = SEGV_MAPERR;
int fault; vm_fault_t fault;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
cause >>= 2; cause >>= 2;
......
...@@ -53,7 +53,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long address, ...@@ -53,7 +53,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long address,
struct mm_struct *mm; struct mm_struct *mm;
struct vm_area_struct *vma; struct vm_area_struct *vma;
int si_code; int si_code;
int fault; vm_fault_t fault;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
tsk = current; tsk = current;
......
...@@ -262,7 +262,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long code, ...@@ -262,7 +262,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long code,
struct task_struct *tsk; struct task_struct *tsk;
struct mm_struct *mm; struct mm_struct *mm;
unsigned long acc_type; unsigned long acc_type;
int fault = 0; vm_fault_t fault = 0;
unsigned int flags; unsigned int flags;
if (faulthandler_disabled()) if (faulthandler_disabled())
......
...@@ -10,13 +10,15 @@ ...@@ -10,13 +10,15 @@
#ifndef _ASM_POWERPC_COPRO_H #ifndef _ASM_POWERPC_COPRO_H
#define _ASM_POWERPC_COPRO_H #define _ASM_POWERPC_COPRO_H
#include <linux/mm_types.h>
struct copro_slb struct copro_slb
{ {
u64 esid, vsid; u64 esid, vsid;
}; };
int copro_handle_mm_fault(struct mm_struct *mm, unsigned long ea, int copro_handle_mm_fault(struct mm_struct *mm, unsigned long ea,
unsigned long dsisr, unsigned *flt); unsigned long dsisr, vm_fault_t *flt);
int copro_calculate_slb(struct mm_struct *mm, u64 ea, struct copro_slb *slb); int copro_calculate_slb(struct mm_struct *mm, u64 ea, struct copro_slb *slb);
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
* to handle fortunately. * to handle fortunately.
*/ */
int copro_handle_mm_fault(struct mm_struct *mm, unsigned long ea, int copro_handle_mm_fault(struct mm_struct *mm, unsigned long ea,
unsigned long dsisr, unsigned *flt) unsigned long dsisr, vm_fault_t *flt)
{ {
struct vm_area_struct *vma; struct vm_area_struct *vma;
unsigned long is_write; unsigned long is_write;
......
...@@ -156,7 +156,7 @@ static noinline int bad_access(struct pt_regs *regs, unsigned long address) ...@@ -156,7 +156,7 @@ static noinline int bad_access(struct pt_regs *regs, unsigned long address)
} }
static int do_sigbus(struct pt_regs *regs, unsigned long address, static int do_sigbus(struct pt_regs *regs, unsigned long address,
unsigned int fault) vm_fault_t fault)
{ {
siginfo_t info; siginfo_t info;
unsigned int lsb = 0; unsigned int lsb = 0;
...@@ -187,7 +187,8 @@ static int do_sigbus(struct pt_regs *regs, unsigned long address, ...@@ -187,7 +187,8 @@ static int do_sigbus(struct pt_regs *regs, unsigned long address,
return 0; return 0;
} }
static int mm_fault_error(struct pt_regs *regs, unsigned long addr, int fault) static int mm_fault_error(struct pt_regs *regs, unsigned long addr,
vm_fault_t fault)
{ {
/* /*
* Kernel page fault interrupted by SIGKILL. We have no reason to * Kernel page fault interrupted by SIGKILL. We have no reason to
...@@ -415,7 +416,7 @@ static int __do_page_fault(struct pt_regs *regs, unsigned long address, ...@@ -415,7 +416,7 @@ static int __do_page_fault(struct pt_regs *regs, unsigned long address,
int is_exec = TRAP(regs) == 0x400; int is_exec = TRAP(regs) == 0x400;
int is_user = user_mode(regs); int is_user = user_mode(regs);
int is_write = page_fault_is_write(error_code); int is_write = page_fault_is_write(error_code);
int fault, major = 0; vm_fault_t fault, major = 0;
bool must_retry = false; bool must_retry = false;
if (notify_page_fault(regs)) if (notify_page_fault(regs))
......
...@@ -111,7 +111,7 @@ int spufs_handle_class1(struct spu_context *ctx) ...@@ -111,7 +111,7 @@ int spufs_handle_class1(struct spu_context *ctx)
{ {
u64 ea, dsisr, access; u64 ea, dsisr, access;
unsigned long flags; unsigned long flags;
unsigned flt = 0; vm_fault_t flt = 0;
int ret; int ret;
/* /*
......
...@@ -41,7 +41,8 @@ asmlinkage void do_page_fault(struct pt_regs *regs) ...@@ -41,7 +41,8 @@ asmlinkage void do_page_fault(struct pt_regs *regs)
struct mm_struct *mm; struct mm_struct *mm;
unsigned long addr, cause; unsigned long addr, cause;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
int fault, code = SEGV_MAPERR; int code = SEGV_MAPERR;
vm_fault_t fault;
cause = regs->scause; cause = regs->scause;
addr = regs->sbadaddr; addr = regs->sbadaddr;
......
...@@ -341,7 +341,8 @@ static noinline int signal_return(struct pt_regs *regs) ...@@ -341,7 +341,8 @@ static noinline int signal_return(struct pt_regs *regs)
return -EACCES; return -EACCES;
} }
static noinline void do_fault_error(struct pt_regs *regs, int access, int fault) static noinline void do_fault_error(struct pt_regs *regs, int access,
vm_fault_t fault)
{ {
int si_code; int si_code;
...@@ -401,7 +402,7 @@ static noinline void do_fault_error(struct pt_regs *regs, int access, int fault) ...@@ -401,7 +402,7 @@ static noinline void do_fault_error(struct pt_regs *regs, int access, int fault)
* 11 Page translation -> Not present (nullification) * 11 Page translation -> Not present (nullification)
* 3b Region third trans. -> Not present (nullification) * 3b Region third trans. -> Not present (nullification)
*/ */
static inline int do_exception(struct pt_regs *regs, int access) static inline vm_fault_t do_exception(struct pt_regs *regs, int access)
{ {
struct gmap *gmap; struct gmap *gmap;
struct task_struct *tsk; struct task_struct *tsk;
...@@ -411,7 +412,7 @@ static inline int do_exception(struct pt_regs *regs, int access) ...@@ -411,7 +412,7 @@ static inline int do_exception(struct pt_regs *regs, int access)
unsigned long trans_exc_code; unsigned long trans_exc_code;
unsigned long address; unsigned long address;
unsigned int flags; unsigned int flags;
int fault; vm_fault_t fault;
tsk = current; tsk = current;
/* /*
...@@ -564,7 +565,8 @@ static inline int do_exception(struct pt_regs *regs, int access) ...@@ -564,7 +565,8 @@ static inline int do_exception(struct pt_regs *regs, int access)
void do_protection_exception(struct pt_regs *regs) void do_protection_exception(struct pt_regs *regs)
{ {
unsigned long trans_exc_code; unsigned long trans_exc_code;
int access, fault; int access;
vm_fault_t fault;
trans_exc_code = regs->int_parm_long; trans_exc_code = regs->int_parm_long;
/* /*
...@@ -599,7 +601,8 @@ NOKPROBE_SYMBOL(do_protection_exception); ...@@ -599,7 +601,8 @@ NOKPROBE_SYMBOL(do_protection_exception);
void do_dat_exception(struct pt_regs *regs) void do_dat_exception(struct pt_regs *regs)
{ {
int access, fault; int access;
vm_fault_t fault;
access = VM_READ | VM_EXEC | VM_WRITE; access = VM_READ | VM_EXEC | VM_WRITE;
fault = do_exception(regs, access); fault = do_exception(regs, access);
......
...@@ -313,7 +313,7 @@ do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address) ...@@ -313,7 +313,7 @@ do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address)
static noinline int static noinline int
mm_fault_error(struct pt_regs *regs, unsigned long error_code, mm_fault_error(struct pt_regs *regs, unsigned long error_code,
unsigned long address, unsigned int fault) unsigned long address, vm_fault_t fault)
{ {
/* /*
* Pagefault was interrupted by SIGKILL. We have no reason to * Pagefault was interrupted by SIGKILL. We have no reason to
...@@ -396,7 +396,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs, ...@@ -396,7 +396,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs,
struct task_struct *tsk; struct task_struct *tsk;
struct mm_struct *mm; struct mm_struct *mm;
struct vm_area_struct * vma; struct vm_area_struct * vma;
int fault; vm_fault_t fault;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
tsk = current; tsk = current;
......
...@@ -166,7 +166,8 @@ asmlinkage void do_sparc_fault(struct pt_regs *regs, int text_fault, int write, ...@@ -166,7 +166,8 @@ asmlinkage void do_sparc_fault(struct pt_regs *regs, int text_fault, int write,
unsigned int fixup; unsigned int fixup;
unsigned long g2; unsigned long g2;
int from_user = !(regs->psr & PSR_PS); int from_user = !(regs->psr & PSR_PS);
int fault, code; int code;
vm_fault_t fault;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
if (text_fault) if (text_fault)
......
...@@ -278,7 +278,8 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs) ...@@ -278,7 +278,8 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
struct mm_struct *mm = current->mm; struct mm_struct *mm = current->mm;
struct vm_area_struct *vma; struct vm_area_struct *vma;
unsigned int insn = 0; unsigned int insn = 0;
int si_code, fault_code, fault; int si_code, fault_code;
vm_fault_t fault;
unsigned long address, mm_rss; unsigned long address, mm_rss;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
......
...@@ -72,7 +72,7 @@ int handle_page_fault(unsigned long address, unsigned long ip, ...@@ -72,7 +72,7 @@ int handle_page_fault(unsigned long address, unsigned long ip,
} }
do { do {
int fault; vm_fault_t fault;
fault = handle_mm_fault(vma, address, flags); fault = handle_mm_fault(vma, address, flags);
......
...@@ -168,11 +168,11 @@ static inline bool access_error(unsigned int fsr, struct vm_area_struct *vma) ...@@ -168,11 +168,11 @@ static inline bool access_error(unsigned int fsr, struct vm_area_struct *vma)
return vma->vm_flags & mask ? false : true; return vma->vm_flags & mask ? false : true;
} }
static int __do_pf(struct mm_struct *mm, unsigned long addr, unsigned int fsr, static vm_fault_t __do_pf(struct mm_struct *mm, unsigned long addr,
unsigned int flags, struct task_struct *tsk) unsigned int fsr, unsigned int flags, struct task_struct *tsk)
{ {
struct vm_area_struct *vma; struct vm_area_struct *vma;
int fault; vm_fault_t fault;
vma = find_vma(mm, addr); vma = find_vma(mm, addr);
fault = VM_FAULT_BADMAP; fault = VM_FAULT_BADMAP;
...@@ -209,7 +209,8 @@ static int do_pf(unsigned long addr, unsigned int fsr, struct pt_regs *regs) ...@@ -209,7 +209,8 @@ static int do_pf(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
{ {
struct task_struct *tsk; struct task_struct *tsk;
struct mm_struct *mm; struct mm_struct *mm;
int fault, sig, code; int sig, code;
vm_fault_t fault;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
tsk = current; tsk = current;
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <linux/prefetch.h> /* prefetchw */ #include <linux/prefetch.h> /* prefetchw */
#include <linux/context_tracking.h> /* exception_enter(), ... */ #include <linux/context_tracking.h> /* exception_enter(), ... */
#include <linux/uaccess.h> /* faulthandler_disabled() */ #include <linux/uaccess.h> /* faulthandler_disabled() */
#include <linux/mm_types.h>
#include <asm/cpufeature.h> /* boot_cpu_has, ... */ #include <asm/cpufeature.h> /* boot_cpu_has, ... */
#include <asm/traps.h> /* dotraplinkage, ... */ #include <asm/traps.h> /* dotraplinkage, ... */
...@@ -999,7 +1000,7 @@ do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address, ...@@ -999,7 +1000,7 @@ do_sigbus(struct pt_regs *regs, unsigned long error_code, unsigned long address,
static noinline void static noinline void
mm_fault_error(struct pt_regs *regs, unsigned long error_code, mm_fault_error(struct pt_regs *regs, unsigned long error_code,
unsigned long address, u32 *pkey, unsigned int fault) unsigned long address, u32 *pkey, vm_fault_t fault)
{ {
if (fatal_signal_pending(current) && !(error_code & X86_PF_USER)) { if (fatal_signal_pending(current) && !(error_code & X86_PF_USER)) {
no_context(regs, error_code, address, 0, 0); no_context(regs, error_code, address, 0, 0);
...@@ -1213,7 +1214,7 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code, ...@@ -1213,7 +1214,7 @@ __do_page_fault(struct pt_regs *regs, unsigned long error_code,
struct vm_area_struct *vma; struct vm_area_struct *vma;
struct task_struct *tsk; struct task_struct *tsk;
struct mm_struct *mm; struct mm_struct *mm;
int fault, major = 0; vm_fault_t fault, major = 0;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
u32 pkey; u32 pkey;
......
...@@ -42,7 +42,7 @@ void do_page_fault(struct pt_regs *regs) ...@@ -42,7 +42,7 @@ void do_page_fault(struct pt_regs *regs)
int code; int code;
int is_write, is_exec; int is_write, is_exec;
int fault; vm_fault_t fault;
unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
code = SEGV_MAPERR; code = SEGV_MAPERR;
......
...@@ -508,7 +508,7 @@ static void do_fault(struct work_struct *work) ...@@ -508,7 +508,7 @@ static void do_fault(struct work_struct *work)
{ {
struct fault *fault = container_of(work, struct fault, work); struct fault *fault = container_of(work, struct fault, work);
struct vm_area_struct *vma; struct vm_area_struct *vma;
int ret = VM_FAULT_ERROR; vm_fault_t ret = VM_FAULT_ERROR;
unsigned int flags = 0; unsigned int flags = 0;
struct mm_struct *mm; struct mm_struct *mm;
u64 address; u64 address;
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <linux/pci-ats.h> #include <linux/pci-ats.h>
#include <linux/dmar.h> #include <linux/dmar.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/mm_types.h>
#include <asm/page.h> #include <asm/page.h>
#define PASID_ENTRY_P BIT_ULL(0) #define PASID_ENTRY_P BIT_ULL(0)
...@@ -594,7 +595,8 @@ static irqreturn_t prq_event_thread(int irq, void *d) ...@@ -594,7 +595,8 @@ static irqreturn_t prq_event_thread(int irq, void *d)
struct vm_area_struct *vma; struct vm_area_struct *vma;
struct page_req_dsc *req; struct page_req_dsc *req;
struct qi_desc resp; struct qi_desc resp;
int ret, result; int result;
vm_fault_t ret;
u64 address; u64 address;
handled = 1; handled = 1;
......
...@@ -134,7 +134,7 @@ static int cxl_handle_segment_miss(struct cxl_context *ctx, ...@@ -134,7 +134,7 @@ static int cxl_handle_segment_miss(struct cxl_context *ctx,
int cxl_handle_mm_fault(struct mm_struct *mm, u64 dsisr, u64 dar) int cxl_handle_mm_fault(struct mm_struct *mm, u64 dsisr, u64 dar)
{ {
unsigned flt = 0; vm_fault_t flt = 0;
int result; int result;
unsigned long access, flags, inv_flags = 0; unsigned long access, flags, inv_flags = 0;
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
// Copyright 2017 IBM Corp. // Copyright 2017 IBM Corp.
#include <linux/sched/mm.h> #include <linux/sched/mm.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/mm_types.h>
#include <linux/mmu_context.h> #include <linux/mmu_context.h>
#include <asm/copro.h> #include <asm/copro.h>
#include <asm/pnv-ocxl.h> #include <asm/pnv-ocxl.h>
...@@ -126,7 +127,7 @@ static void ack_irq(struct spa *spa, enum xsl_response r) ...@@ -126,7 +127,7 @@ static void ack_irq(struct spa *spa, enum xsl_response r)
static void xsl_fault_handler_bh(struct work_struct *fault_work) static void xsl_fault_handler_bh(struct work_struct *fault_work)
{ {
unsigned int flt = 0; vm_fault_t flt = 0;
unsigned long access, flags, inv_flags = 0; unsigned long access, flags, inv_flags = 0;
enum xsl_response r; enum xsl_response r;
struct xsl_fault *fault = container_of(fault_work, struct xsl_fault, struct xsl_fault *fault = container_of(fault_work, struct xsl_fault,
......
...@@ -299,14 +299,14 @@ static int hmm_vma_do_fault(struct mm_walk *walk, unsigned long addr, ...@@ -299,14 +299,14 @@ static int hmm_vma_do_fault(struct mm_walk *walk, unsigned long addr,
struct hmm_vma_walk *hmm_vma_walk = walk->private; struct hmm_vma_walk *hmm_vma_walk = walk->private;
struct hmm_range *range = hmm_vma_walk->range; struct hmm_range *range = hmm_vma_walk->range;
struct vm_area_struct *vma = walk->vma; struct vm_area_struct *vma = walk->vma;
int r; vm_fault_t ret;
flags |= hmm_vma_walk->block ? 0 : FAULT_FLAG_ALLOW_RETRY; flags |= hmm_vma_walk->block ? 0 : FAULT_FLAG_ALLOW_RETRY;
flags |= write_fault ? FAULT_FLAG_WRITE : 0; flags |= write_fault ? FAULT_FLAG_WRITE : 0;
r = handle_mm_fault(vma, addr, flags); ret = handle_mm_fault(vma, addr, flags);
if (r & VM_FAULT_RETRY) if (ret & VM_FAULT_RETRY)
return -EBUSY; return -EBUSY;
if (r & VM_FAULT_ERROR) { if (ret & VM_FAULT_ERROR) {
*pfn = range->values[HMM_PFN_ERROR]; *pfn = range->values[HMM_PFN_ERROR];
return -EFAULT; return -EFAULT;
} }
......
...@@ -470,7 +470,7 @@ static inline bool ksm_test_exit(struct mm_struct *mm) ...@@ -470,7 +470,7 @@ static inline bool ksm_test_exit(struct mm_struct *mm)
static int break_ksm(struct vm_area_struct *vma, unsigned long addr) static int break_ksm(struct vm_area_struct *vma, unsigned long addr)
{ {
struct page *page; struct page *page;
int ret = 0; vm_fault_t ret = 0;
do { do {
cond_resched(); cond_resched();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment