include/linux/mm.h: add new inline function vmf_error()
authorSouptick Joarder <jrdr.linux@gmail.com>
Fri, 18 May 2018 23:08:47 +0000 (16:08 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 19 May 2018 00:17:12 +0000 (17:17 -0700)
commitd97baf9470b0668904aa96865abe7db4000dc3ba
tree5e5b57321d40ca296575b35f9bd5064736f7a944
parent1e3054b98c5415d5cb5f8824fc33b548ae5644c3
include/linux/mm.h: add new inline function vmf_error()

Many places in drivers/ file systems, error was handled in a common way
like below:

ret = (ret == -ENOMEM) ? VM_FAULT_OOM : VM_FAULT_SIGBUS;

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.

Link: http://lkml.kernel.org/r/20180510174826.GA14268@jordon-HP-15-Notebook-PC
Signed-off-by: Souptick Joarder <jrdr.linux@gmail.com>
Reviewed-by: Matthew Wilcox <mawilcox@microsoft.com>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
include/linux/mm.h