diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2016-06-20 08:35:20 (GMT) |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2016-06-28 07:32:27 (GMT) |
commit | dc4aace160165bd15400a79f9f5ab97405278f48 (patch) | |
tree | b9bda648dbb6be08deea6af9fd4e6061e16a1797 /lib/memweight.c | |
parent | 109ab954713bd07c96f65ceddab4886069a110ab (diff) | |
download | linux-dc4aace160165bd15400a79f9f5ab97405278f48.tar.xz |
s390/uaccess: fix __put_get_user_asm define
The __put_get_user_asm defines an inline assmembly which makes use of
the asm register construct. The parameters passed to that define may
also contain function calls.
It is a gcc restriction that between register asm statements and the
use of any such annotated variables function calls may clobber the
register / variable contents. Or in other words: gcc would generate
broken code.
This can be achieved e.g. with the following code:
get_user(x, func() ? a : b);
where the call of func would clobber register zero which is used by
the __put_get_user_asm define.
To avoid this add two static inline functions which don't have these
side effects.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'lib/memweight.c')
0 files changed, 0 insertions, 0 deletions