lkml.org 
[lkml]   [2016]   [Feb]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Subject[PATCH v2 0/5] all: s390: make compat wrappers the generic solution
Date
The problem that makes us use wrappers is that some compat
architectures allows user code to access top halves of registers.
This is not a problem for syscalls that are already handled by compat
code, or for that who has types of the same size in kernel and
userspace. In case of s390 and lp64/ilp32 the problem is in pointer
types, long, unsigned long.

S390 folks already have the solution for it. In this patchset,
it is turned to be general, as arm64/ilp32 needs it too.

This patchset is created as the part of the work of enabling arm64
with ILP32 user mode. See details here:
http://thread.gmane.org/gmane.linux.kernel/2126946

This is the implementation of one of two possible approaches. First
one defines new syscall handler declaration macro, that creates both compat and
non-compat handlers, see [1]. This one declares all wrappers in separated file
kernel/compat_wrapper.c

Build-tested on s390.

[1] http://www.spinics.net/lists/linux-s390/msg11593.html

Yury Norov (5):
all: syscall wrappers: add documentation
all: introduce COMPAT_WRAPPER option and enable it for s390
all: s390: move wrapper infrastructure to generic headers
all: s390: move compat_wrappers.c from arch/s390/kernel to kernel/
all: wrap needed syscalls in generic unistd

Documentation/adding-syscalls.txt | 32 +++++
arch/Kconfig | 4 +
arch/s390/Kconfig | 1 +
arch/s390/include/asm/compat.h | 17 ++-
arch/s390/kernel/Makefile | 2 +-
arch/s390/kernel/compat_wrapper.c | 180 ------------------------
include/linux/compat.h | 278 ++++++++++++++++++++++++++++++++++++++
include/linux/syscalls.h | 57 +-------
include/linux/syscalls_structs.h | 60 ++++++++
include/uapi/asm-generic/unistd.h | 231 +++++++++++++++----------------
kernel/Makefile | 1 +
kernel/compat_wrapper.c | 170 +++++++++++++++++++++++
12 files changed, 680 insertions(+), 353 deletions(-)
delete mode 100644 arch/s390/kernel/compat_wrapper.c
create mode 100644 include/linux/syscalls_structs.h
create mode 100644 kernel/compat_wrapper.c

--
2.5.0

\
 
 \ /
  Last update: 2016-02-24 20:21    [W:0.101 / U:0.148 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site