diff options
author | Helge Deller <deller@gmx.de> | 2017-03-25 11:59:15 +0100 |
---|---|---|
committer | Helge Deller <deller@gmx.de> | 2017-03-29 21:50:36 +0200 |
commit | d19f5e41b344a057bb2450024a807476f30978d2 (patch) | |
tree | 4f7f4fa52e5e845ec0abe38d1906404d575ca8ab /arch/parisc/lib/Makefile | |
parent | 554bfeceb8a22d448cd986fc9efce25e833278a1 (diff) | |
download | talos-obmc-linux-d19f5e41b344a057bb2450024a807476f30978d2.tar.gz talos-obmc-linux-d19f5e41b344a057bb2450024a807476f30978d2.zip |
parisc: Clean up fixup routines for get_user()/put_user()
Al Viro noticed that userspace accesses via get_user()/put_user() can be
simplified a lot with regard to usage of the exception handling.
This patch implements a fixup routine for get_user() and put_user() in such
that the exception handler will automatically load -EFAULT into the register
%r8 (the error value) in case on a fault on userspace. Additionally the fixup
routine will zero the target register on fault in case of a get_user() call.
The target register is extracted out of the faulting assembly instruction.
This patch brings a few benefits over the old implementation:
1. Exception handling gets much cleaner, easier and smaller in size.
2. Helper functions like fixup_get_user_skip_1 (all of fixup.S) can be dropped.
3. No need to hardcode %r9 as target register for get_user() any longer. This
helps the compiler register allocator and thus creates less assembler
statements.
4. No dependency on the exception_data contents any longer.
5. Nested faults will be handled cleanly.
Reported-by: Al Viro <viro@ZenIV.linux.org.uk>
Cc: <stable@vger.kernel.org> # v4.9+
Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to 'arch/parisc/lib/Makefile')
-rw-r--r-- | arch/parisc/lib/Makefile | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/parisc/lib/Makefile b/arch/parisc/lib/Makefile index 8fa92b8d839a..f2dac4d73b1b 100644 --- a/arch/parisc/lib/Makefile +++ b/arch/parisc/lib/Makefile @@ -2,7 +2,7 @@ # Makefile for parisc-specific library files # -lib-y := lusercopy.o bitops.o checksum.o io.o memset.o fixup.o memcpy.o \ +lib-y := lusercopy.o bitops.o checksum.o io.o memset.o memcpy.o \ ucmpdi2.o delay.o obj-y := iomap.o |