2007-02-02 14:22:20

by Martin Schwidefsky

[permalink] [raw]
Subject: [S390] Add set_fs(USER_DS) to start_thread().

From: Heiko Carstens <[email protected]>

[S390] Add set_fs(USER_DS) to start_thread().

Currently works anyway since search_binary_handler has a
set_fs(USER_DS). But start_thread() is the place where this should be
done. Following all other architectures...

Signed-off-by: Heiko Carstens <[email protected]>
Signed-off-by: Martin Schwidefsky <[email protected]>
---

include/asm-s390/processor.h | 3 +++
1 files changed, 3 insertions(+)

diff -urpN linux-2.6/include/asm-s390/processor.h linux-2.6-patched/include/asm-s390/processor.h
--- linux-2.6/include/asm-s390/processor.h 2007-02-02 14:04:34.000000000 +0100
+++ linux-2.6-patched/include/asm-s390/processor.h 2007-02-02 14:04:42.000000000 +0100
@@ -144,6 +144,7 @@ struct stack_frame {
#ifndef __s390x__

#define start_thread(regs, new_psw, new_stackp) do { \
+ set_fs(USER_DS); \
regs->psw.mask = PSW_USER_BITS; \
regs->psw.addr = new_psw | PSW_ADDR_AMODE; \
regs->gprs[15] = new_stackp ; \
@@ -152,12 +153,14 @@ struct stack_frame {
#else /* __s390x__ */

#define start_thread(regs, new_psw, new_stackp) do { \
+ set_fs(USER_DS); \
regs->psw.mask = PSW_USER_BITS; \
regs->psw.addr = new_psw; \
regs->gprs[15] = new_stackp; \
} while (0)

#define start_thread31(regs, new_psw, new_stackp) do { \
+ set_fs(USER_DS); \
regs->psw.mask = PSW_USER32_BITS; \
regs->psw.addr = new_psw; \
regs->gprs[15] = new_stackp; \