From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.9 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 10C93C11D0E for ; Thu, 20 Feb 2020 16:02:53 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 9C9842465D for ; Thu, 20 Feb 2020 16:02:52 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="FPTYXDfU" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9C9842465D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 27EF36B0006; Thu, 20 Feb 2020 11:02:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 255AC6B0007; Thu, 20 Feb 2020 11:02:52 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 16B2A6B0008; Thu, 20 Feb 2020 11:02:52 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0158.hostedemail.com [216.40.44.158]) by kanga.kvack.org (Postfix) with ESMTP id EF8AF6B0006 for ; Thu, 20 Feb 2020 11:02:51 -0500 (EST) Received: from smtpin04.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 5898E18035435 for ; Thu, 20 Feb 2020 16:02:51 +0000 (UTC) X-FDA: 76510973742.04.hand56_530bb4f5c195e X-HE-Tag: hand56_530bb4f5c195e X-Filterd-Recvd-Size: 18627 Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) by imf08.hostedemail.com (Postfix) with ESMTP for ; Thu, 20 Feb 2020 16:02:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1582214570; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OPCp8GtH/0n85rwAayGN3FVQXv0pxcJ0TI5QbhUhi+I=; b=FPTYXDfUrDEZvhb0rJxoLd1t72esYAfhyjJHsbiMnBiW5/MA8VYL1qTJCZMG7HBN3AcJnK SPXAxh437Rm7JhnPHYXPlafFgc3RgU86flrv7auDT6EE8eTV1OBccnmp2C85RVGXaTFsrf 9omnYsvBqCQRY0FAqvfSKVWSFJMFL5w= Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-146-4JEs8gtmPiSg_CzOECS2yQ-1; Thu, 20 Feb 2020 11:02:46 -0500 Received: by mail-qk1-f200.google.com with SMTP id m25so3051210qka.4 for ; Thu, 20 Feb 2020 08:02:44 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2AmcICkS4qLRuLvXLi+X8xttLltG7TU1l+7uRTCbIxo=; b=OMUJBvAiXzAtrRKEP4qq8yR4B3jJXSkPnM2hsrC42vcS7EbK3s2Z2f1DZdXza5dqzS a7iAn+fk7lTv7T9Y/NpkahUAw+LZup9sMCv+PfU8IBdwzGocPfBqHViHCeR0CfRtOrRi u5gWNWLlJ/A+c1vHJAzGHCxU/q4sBhCGFKrxWSIOCfdPefK2m2K0Y7C7U/Mxjs5UDnSo Z9g4JhuMNGviyuaV0epsv6jmZOYd9DPpOauWpqfLYib8l4AK8E+Ewpzpg1yyn8ZThIl4 DndvHHFtSkjowJxG/XElLIiwMXfk0iT7xRTFtzt76YePbg1oiXK0IYYpHRdmj4qKZOUM vWmQ== X-Gm-Message-State: APjAAAWsPuMDuMQePonfjTTsxXOdT84Wmtw7f+LMLN7OLq8BX1cPfDQg 9e/yJn43PQibyEs7tYce7nI+bNDPDtD+kLrTq8uE77v/TcSAHTZW2iUabhYe9S0vVIpWVRQb3+Z MMao5Jl1vza8= X-Received: by 2002:a37:5fc2:: with SMTP id t185mr28272262qkb.271.1582214561775; Thu, 20 Feb 2020 08:02:41 -0800 (PST) X-Google-Smtp-Source: APXvYqy59oXB5E7UBfzrHFadhkloEalSk+rQ9RMcQOQcFGKGKndhAOp1fJbWwOLNqiBulT5JTmCSUg== X-Received: by 2002:a37:5fc2:: with SMTP id t185mr28272212qkb.271.1582214561305; Thu, 20 Feb 2020 08:02:41 -0800 (PST) Received: from xz-x1.redhat.com ([104.156.64.75]) by smtp.gmail.com with ESMTPSA id d69sm1852468qkg.63.2020.02.20.08.02.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Feb 2020 08:02:40 -0800 (PST) From: Peter Xu To: linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: Peter Xu , Martin Cracauer , Mike Rapoport , Hugh Dickins , Jerome Glisse , "Kirill A . Shutemov" , Matthew Wilcox , Pavel Emelyanov , Brian Geffon , Maya Gokhale , Denis Plotnikov , Andrea Arcangeli , Johannes Weiner , "Dr . David Alan Gilbert" , Linus Torvalds , Mike Kravetz , Marty McFadden , David Hildenbrand , Bobby Powers , Mel Gorman Subject: [PATCH RESEND v6 11/16] mm: Introduce FAULT_FLAG_DEFAULT Date: Thu, 20 Feb 2020 11:02:38 -0500 Message-Id: <20200220160238.9694-1-peterx@redhat.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200220155353.8676-1-peterx@redhat.com> References: MIME-Version: 1.0 X-MC-Unique: 4JEs8gtmPiSg_CzOECS2yQ-1 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Although there're tons of arch-specific page fault handlers, most of them are still sharing the same initial value of the page fault flags. Say, merely all of the page fault handlers would allow the fault to be retried, and they also allow the fault to respond to SIGKILL. Let's define a default value for the fault flags to replace those initial page fault flags that were copied over. With this, it'll be far easier to introduce new fault flag that can be used by all the architectures instead of touching all the archs. Reviewed-by: David Hildenbrand Signed-off-by: Peter Xu --- arch/alpha/mm/fault.c | 2 +- arch/arc/mm/fault.c | 2 +- arch/arm/mm/fault.c | 2 +- arch/arm64/mm/fault.c | 2 +- arch/hexagon/mm/vm_fault.c | 2 +- arch/ia64/mm/fault.c | 2 +- arch/m68k/mm/fault.c | 2 +- arch/microblaze/mm/fault.c | 2 +- arch/mips/mm/fault.c | 2 +- arch/nds32/mm/fault.c | 2 +- arch/nios2/mm/fault.c | 2 +- arch/openrisc/mm/fault.c | 2 +- arch/parisc/mm/fault.c | 2 +- arch/powerpc/mm/fault.c | 2 +- arch/riscv/mm/fault.c | 2 +- arch/s390/mm/fault.c | 2 +- arch/sh/mm/fault.c | 2 +- arch/sparc/mm/fault_32.c | 2 +- arch/sparc/mm/fault_64.c | 2 +- arch/um/kernel/trap.c | 2 +- arch/unicore32/mm/fault.c | 2 +- arch/x86/mm/fault.c | 2 +- arch/xtensa/mm/fault.c | 2 +- include/linux/mm.h | 7 +++++++ 24 files changed, 30 insertions(+), 23 deletions(-) diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c index aea33b599037..fcfa229cc1e7 100644 --- a/arch/alpha/mm/fault.c +++ b/arch/alpha/mm/fault.c @@ -89,7 +89,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr, =09const struct exception_table_entry *fixup; =09int si_code =3D SEGV_MAPERR; =09vm_fault_t fault; -=09unsigned int flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int flags =3D FAULT_FLAG_DEFAULT; =20 =09/* As of EV6, a load into $31/$f31 is a prefetch, and never faults =09 (or is suppressed by the PALcode). Support that for older CPUs diff --git a/arch/arc/mm/fault.c b/arch/arc/mm/fault.c index 6eb821a59b49..643fad774071 100644 --- a/arch/arc/mm/fault.c +++ b/arch/arc/mm/fault.c @@ -100,7 +100,7 @@ void do_page_fault(unsigned long address, struct pt_reg= s *regs) =09 (regs->ecr_cause =3D=3D ECR_C_PROTV_INST_FETCH)) =09=09exec =3D 1; =20 -=09flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09flags =3D FAULT_FLAG_DEFAULT; =09if (user_mode(regs)) =09=09flags |=3D FAULT_FLAG_USER; =09if (write) diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c index 937b81ff8649..18ef0b143ac2 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c @@ -241,7 +241,7 @@ do_page_fault(unsigned long addr, unsigned int fsr, str= uct pt_regs *regs) =09struct mm_struct *mm; =09int sig, code; =09vm_fault_t fault; -=09unsigned int flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int flags =3D FAULT_FLAG_DEFAULT; =20 =09if (kprobe_page_fault(regs, fsr)) =09=09return 0; diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c index 6f4b69d712b1..cbb29a43aa7f 100644 --- a/arch/arm64/mm/fault.c +++ b/arch/arm64/mm/fault.c @@ -446,7 +446,7 @@ static int __kprobes do_page_fault(unsigned long addr, = unsigned int esr, =09struct mm_struct *mm =3D current->mm; =09vm_fault_t fault, major =3D 0; =09unsigned long vm_flags =3D VM_READ | VM_WRITE | VM_EXEC; -=09unsigned int mm_flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int mm_flags =3D FAULT_FLAG_DEFAULT; =20 =09if (kprobe_page_fault(regs, esr)) =09=09return 0; diff --git a/arch/hexagon/mm/vm_fault.c b/arch/hexagon/mm/vm_fault.c index d19beaf11b4c..d9e15d941bdb 100644 --- a/arch/hexagon/mm/vm_fault.c +++ b/arch/hexagon/mm/vm_fault.c @@ -41,7 +41,7 @@ void do_page_fault(unsigned long address, long cause, str= uct pt_regs *regs) =09int si_code =3D SEGV_MAPERR; =09vm_fault_t fault; =09const struct exception_table_entry *fixup; -=09unsigned int flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int flags =3D FAULT_FLAG_DEFAULT; =20 =09/* =09 * If we're in an interrupt or have no user context, diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c index 211b4f439384..b5aa4e80c762 100644 --- a/arch/ia64/mm/fault.c +++ b/arch/ia64/mm/fault.c @@ -65,7 +65,7 @@ ia64_do_page_fault (unsigned long address, unsigned long = isr, struct pt_regs *re =09struct mm_struct *mm =3D current->mm; =09unsigned long mask; =09vm_fault_t fault; -=09unsigned int flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int flags =3D FAULT_FLAG_DEFAULT; =20 =09mask =3D ((((isr >> IA64_ISR_X_BIT) & 1UL) << VM_EXEC_BIT) =09=09| (((isr >> IA64_ISR_W_BIT) & 1UL) << VM_WRITE_BIT)); diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c index a455e202691b..182799fd9987 100644 --- a/arch/m68k/mm/fault.c +++ b/arch/m68k/mm/fault.c @@ -71,7 +71,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long add= ress, =09struct mm_struct *mm =3D current->mm; =09struct vm_area_struct * vma; =09vm_fault_t fault; -=09unsigned int flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int flags =3D FAULT_FLAG_DEFAULT; =20 =09pr_debug("do page fault:\nregs->sr=3D%#x, regs->pc=3D%#lx, address=3D%#= lx, %ld, %p\n", =09=09regs->sr, regs->pc, address, error_code, mm ? mm->pgd : NULL); diff --git a/arch/microblaze/mm/fault.c b/arch/microblaze/mm/fault.c index cdde01dcdfc3..32da02778a63 100644 --- a/arch/microblaze/mm/fault.c +++ b/arch/microblaze/mm/fault.c @@ -91,7 +91,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long ad= dress, =09int code =3D SEGV_MAPERR; =09int is_write =3D error_code & ESR_S; =09vm_fault_t fault; -=09unsigned int flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int flags =3D FAULT_FLAG_DEFAULT; =20 =09regs->ear =3D address; =09regs->esr =3D error_code; diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c index 0ee6fafc57bc..f177da67d940 100644 --- a/arch/mips/mm/fault.c +++ b/arch/mips/mm/fault.c @@ -44,7 +44,7 @@ static void __kprobes __do_page_fault(struct pt_regs *reg= s, unsigned long write, =09const int field =3D sizeof(unsigned long) * 2; =09int si_code; =09vm_fault_t fault; -=09unsigned int flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int flags =3D FAULT_FLAG_DEFAULT; =20 =09static DEFINE_RATELIMIT_STATE(ratelimit_state, 5 * HZ, 10); =20 diff --git a/arch/nds32/mm/fault.c b/arch/nds32/mm/fault.c index 0e63f81eff5b..2810a4e5ab27 100644 --- a/arch/nds32/mm/fault.c +++ b/arch/nds32/mm/fault.c @@ -80,7 +80,7 @@ void do_page_fault(unsigned long entry, unsigned long add= r, =09int si_code; =09vm_fault_t fault; =09unsigned int mask =3D VM_READ | VM_WRITE | VM_EXEC; -=09unsigned int flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int flags =3D FAULT_FLAG_DEFAULT; =20 =09error_code =3D error_code & (ITYPE_mskINST | ITYPE_mskETYPE); =09tsk =3D current; diff --git a/arch/nios2/mm/fault.c b/arch/nios2/mm/fault.c index 704ace8ca0ee..c38bea4220fb 100644 --- a/arch/nios2/mm/fault.c +++ b/arch/nios2/mm/fault.c @@ -47,7 +47,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsig= ned long cause, =09struct mm_struct *mm =3D tsk->mm; =09int code =3D SEGV_MAPERR; =09vm_fault_t fault; -=09unsigned int flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int flags =3D FAULT_FLAG_DEFAULT; =20 =09cause >>=3D 2; =20 diff --git a/arch/openrisc/mm/fault.c b/arch/openrisc/mm/fault.c index 85c7eb0c0186..30d5c51e9d40 100644 --- a/arch/openrisc/mm/fault.c +++ b/arch/openrisc/mm/fault.c @@ -50,7 +50,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsig= ned long address, =09struct vm_area_struct *vma; =09int si_code; =09vm_fault_t fault; -=09unsigned int flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int flags =3D FAULT_FLAG_DEFAULT; =20 =09tsk =3D current; =20 diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c index f9be1d1cb43f..8e88e5c5f26a 100644 --- a/arch/parisc/mm/fault.c +++ b/arch/parisc/mm/fault.c @@ -274,7 +274,7 @@ void do_page_fault(struct pt_regs *regs, unsigned long = code, =09if (!mm) =09=09goto no_context; =20 -=09flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09flags =3D FAULT_FLAG_DEFAULT; =09if (user_mode(regs)) =09=09flags |=3D FAULT_FLAG_USER; =20 diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c index 0868172ce4e3..d7e1f8dc7e4c 100644 --- a/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c @@ -434,7 +434,7 @@ static int __do_page_fault(struct pt_regs *regs, unsign= ed long address, { =09struct vm_area_struct * vma; =09struct mm_struct *mm =3D current->mm; -=09unsigned int flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int flags =3D FAULT_FLAG_DEFAULT; =09int is_exec =3D TRAP(regs) =3D=3D 0x400; =09int is_user =3D user_mode(regs); =09int is_write =3D page_fault_is_write(error_code); diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c index 1d3869e9ddef..a252d9e38561 100644 --- a/arch/riscv/mm/fault.c +++ b/arch/riscv/mm/fault.c @@ -30,7 +30,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs) =09struct vm_area_struct *vma; =09struct mm_struct *mm; =09unsigned long addr, cause; -=09unsigned int flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int flags =3D FAULT_FLAG_DEFAULT; =09int code =3D SEGV_MAPERR; =09vm_fault_t fault; =20 diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index 179cf92a56e5..551ac311bd35 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c @@ -429,7 +429,7 @@ static inline vm_fault_t do_exception(struct pt_regs *r= egs, int access) =20 =09address =3D trans_exc_code & __FAIL_ADDR_MASK; =09perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS, 1, regs, address); -=09flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09flags =3D FAULT_FLAG_DEFAULT; =09if (user_mode(regs)) =09=09flags |=3D FAULT_FLAG_USER; =09if (access =3D=3D VM_WRITE || (trans_exc_code & store_indication) =3D= =3D 0x400) diff --git a/arch/sh/mm/fault.c b/arch/sh/mm/fault.c index eb4048ad0b38..d9c8f2d00a54 100644 --- a/arch/sh/mm/fault.c +++ b/arch/sh/mm/fault.c @@ -380,7 +380,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs = *regs, =09struct mm_struct *mm; =09struct vm_area_struct * vma; =09vm_fault_t fault; -=09unsigned int flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int flags =3D FAULT_FLAG_DEFAULT; =20 =09tsk =3D current; =09mm =3D tsk->mm; diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c index 6efbeb227644..a91b0c2d84f8 100644 --- a/arch/sparc/mm/fault_32.c +++ b/arch/sparc/mm/fault_32.c @@ -168,7 +168,7 @@ asmlinkage void do_sparc_fault(struct pt_regs *regs, in= t text_fault, int write, =09int from_user =3D !(regs->psr & PSR_PS); =09int code; =09vm_fault_t fault; -=09unsigned int flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int flags =3D FAULT_FLAG_DEFAULT; =20 =09if (text_fault) =09=09address =3D regs->pc; diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c index dd1ed6555831..30653418a672 100644 --- a/arch/sparc/mm/fault_64.c +++ b/arch/sparc/mm/fault_64.c @@ -271,7 +271,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_re= gs *regs) =09int si_code, fault_code; =09vm_fault_t fault; =09unsigned long address, mm_rss; -=09unsigned int flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int flags =3D FAULT_FLAG_DEFAULT; =20 =09fault_code =3D get_thread_fault_code(); =20 diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c index 818553064f04..c59ad37eacda 100644 --- a/arch/um/kernel/trap.c +++ b/arch/um/kernel/trap.c @@ -33,7 +33,7 @@ int handle_page_fault(unsigned long address, unsigned lon= g ip, =09pmd_t *pmd; =09pte_t *pte; =09int err =3D -EFAULT; -=09unsigned int flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int flags =3D FAULT_FLAG_DEFAULT; =20 =09*code_out =3D SEGV_MAPERR; =20 diff --git a/arch/unicore32/mm/fault.c b/arch/unicore32/mm/fault.c index 59d0e6ec2cfc..34a90453ca18 100644 --- a/arch/unicore32/mm/fault.c +++ b/arch/unicore32/mm/fault.c @@ -202,7 +202,7 @@ static int do_pf(unsigned long addr, unsigned int fsr, = struct pt_regs *regs) =09struct mm_struct *mm; =09int sig, code; =09vm_fault_t fault; -=09unsigned int flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int flags =3D FAULT_FLAG_DEFAULT; =20 =09tsk =3D current; =09mm =3D tsk->mm; diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c index 6a00bc8d047f..7b6f65333355 100644 --- a/arch/x86/mm/fault.c +++ b/arch/x86/mm/fault.c @@ -1288,7 +1288,7 @@ void do_user_addr_fault(struct pt_regs *regs, =09struct task_struct *tsk; =09struct mm_struct *mm; =09vm_fault_t fault, major =3D 0; -=09unsigned int flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int flags =3D FAULT_FLAG_DEFAULT; =20 =09tsk =3D current; =09mm =3D tsk->mm; diff --git a/arch/xtensa/mm/fault.c b/arch/xtensa/mm/fault.c index 59515905d4ad..7d196dc951e8 100644 --- a/arch/xtensa/mm/fault.c +++ b/arch/xtensa/mm/fault.c @@ -43,7 +43,7 @@ void do_page_fault(struct pt_regs *regs) =20 =09int is_write, is_exec; =09vm_fault_t fault; -=09unsigned int flags =3D FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE; +=09unsigned int flags =3D FAULT_FLAG_DEFAULT; =20 =09code =3D SEGV_MAPERR; =20 diff --git a/include/linux/mm.h b/include/linux/mm.h index 52269e56c514..08ca35d3c341 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -388,6 +388,13 @@ extern pgprot_t protection_map[16]; #define FAULT_FLAG_REMOTE=090x80=09/* faulting for non current tsk/mm */ #define FAULT_FLAG_INSTRUCTION 0x100=09/* The fault was during an instruc= tion fetch */ =20 +/* + * The default fault flags that should be used by most of the + * arch-specific page fault handlers. + */ +#define FAULT_FLAG_DEFAULT (FAULT_FLAG_ALLOW_RETRY | \ +=09=09=09 FAULT_FLAG_KILLABLE) + #define FAULT_FLAG_TRACE \ =09{ FAULT_FLAG_WRITE,=09=09"WRITE" }, \ =09{ FAULT_FLAG_MKWRITE,=09=09"MKWRITE" }, \ --=20 2.24.1