All of lore.kernel.org
 help / color / mirror / Atom feed
From: Souptick Joarder <jrdr.linux@gmail.com>
To: akpm@linux-foundation.org, willy@infradead.org
Cc: linux-mm@kvack.org
Subject: [PATCH v2] include: mm: Adding new inline function vmf_error
Date: Thu, 10 May 2018 23:18:27 +0530	[thread overview]
Message-ID: <20180510174826.GA14268@jordon-HP-15-Notebook-PC> (raw)

Many places in drivers/ file systems, error was handled
in a common way like below -
ret = (ret == -ENOMEM) ? VM_FAULT_OOM : VM_FAULT_SIGBUS;
This new inline function vmf_error() will replace this
and return vm_fault_t type err.

A lot of drivers and filesystems currently have a rather
complex mapping of errno-to-VM_FAULT code. We have been
able to eliminate a lot of it by just returning VM_FAULT
codes directly from functions which are called exclusively
from the fault handling path.

Some functions can be called both from the fault handler
and other context which are expecting an errno, so they
have to continue to return an errno. Some users still need
to choose different behaviour for different errnos, but
vmf_error() captures the essential error translation
that's common to all users, and those that need to handle
additional errors can handle them first.

Signed-off-by: Souptick Joarder <jrdr.linux@gmail.com>
Reviewed-by: Matthew Wilcox <mawilcox@microsoft.com>
---
v2: Addressed Andrew's comment. Updated the change log.
    Modified vmf_error() to less verbose

 include/linux/mm.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/include/linux/mm.h b/include/linux/mm.h
index a4d8853..6ef5d94 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -2453,6 +2453,13 @@ static inline vm_fault_t vmf_insert_pfn(struct vm_area_struct *vma,
 	return VM_FAULT_NOPAGE;
 }
 
+static inline vm_fault_t vmf_error(int err)
+{
+	if (err == -ENOMEM)
+		return VM_FAULT_OOM;
+	return VM_FAULT_SIGBUS;
+}
+
 struct page *follow_page_mask(struct vm_area_struct *vma,
 			      unsigned long address, unsigned int foll_flags,
 			      unsigned int *page_mask);
-- 
1.9.1

                 reply	other threads:[~2018-05-10 17:46 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180510174826.GA14268@jordon-HP-15-Notebook-PC \
    --to=jrdr.linux@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=linux-mm@kvack.org \
    --cc=willy@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.