Whamcloud - gitweb
- configurable stack size fo x86_64
[fs/lustre-release.git] / lustre / kernel_patches / patches / uml-2.4.20-fixes-1.patch
1  arch/um/kernel/process.c           |    2 +-
2  arch/um/kernel/skas/process.c      |   26 +++++++++++++-------------
3  arch/um/kernel/skas/syscall_kern.c |    3 ++-
4  arch/um/kernel/trap_user.c         |    2 +-
5  arch/um/kernel/tt/syscall_kern.c   |    3 ++-
6  arch/um/kernel/tt/uaccess_user.c   |    2 +-
7  arch/um/kernel/uaccess_user.c      |    2 +-
8  arch/um/link.ld.in                 |    1 -
9  8 files changed, 21 insertions(+), 20 deletions(-)
10
11 Index: linux-2.4.20/arch/um/link.ld.in
12 ===================================================================
13 --- linux-2.4.20.orig/arch/um/link.ld.in        2003-10-25 00:35:59.000000000 +0400
14 +++ linux-2.4.20/arch/um/link.ld.in     2003-10-25 00:36:02.000000000 +0400
15 @@ -6,7 +6,6 @@
16  {
17    . = START() + SIZEOF_HEADERS;
18  
19 -  . = ALIGN(4096);
20    __binary_start = .;
21  ifdef(`MODE_TT', `
22    .thread_private : {
23 Index: linux-2.4.20/arch/um/kernel/process.c
24 ===================================================================
25 --- linux-2.4.20.orig/arch/um/kernel/process.c  2003-10-25 00:35:59.000000000 +0400
26 +++ linux-2.4.20/arch/um/kernel/process.c       2003-10-25 00:36:02.000000000 +0400
27 @@ -232,7 +232,7 @@
28         int n;
29  
30         *jmp_ptr = &buf;
31 -       n = setjmp(buf);
32 +       n = sigsetjmp(buf, 1);
33         if(n != 0)
34                 return(n);
35         (*fn)(arg);
36 Index: linux-2.4.20/arch/um/kernel/skas/process.c
37 ===================================================================
38 --- linux-2.4.20.orig/arch/um/kernel/skas/process.c     2003-10-25 00:35:59.000000000 +0400
39 +++ linux-2.4.20/arch/um/kernel/skas/process.c  2003-10-25 00:36:02.000000000 +0400
40 @@ -59,11 +59,11 @@
41         int err, syscall_nr, status;
42  
43         syscall_nr = PT_SYSCALL_NR(regs->skas.regs);
44 +       UPT_SYSCALL_NR(regs) = syscall_nr;
45         if(syscall_nr < 1){
46                 relay_signal(SIGTRAP, regs);
47                 return;
48         }
49 -       UPT_SYSCALL_NR(regs) = syscall_nr;
50  
51         err = ptrace(PTRACE_POKEUSER, pid, PT_SYSCALL_NR_OFFSET, __NR_getpid);
52         if(err < 0)
53 @@ -189,7 +189,7 @@
54         *switch_buf_ptr = &switch_buf;
55         *fork_buf_ptr = &fork_buf;
56  
57 -       if(setjmp(fork_buf) == 0)
58 +       if(sigsetjmp(fork_buf, 1) == 0)
59                 new_thread_proc(stack, handler);
60  
61         remove_sigstack();
62 @@ -201,8 +201,8 @@
63  
64         *switch_buf = &buf;
65         fork_buf = fb;
66 -       if(setjmp(buf) == 0)
67 -               longjmp(*fork_buf, 1);
68 +       if(sigsetjmp(buf, 1) == 0)
69 +               siglongjmp(*fork_buf, 1);
70  }
71  
72  static int move_registers(int int_op, int fp_op, union uml_pt_regs *regs,
73 @@ -260,8 +260,8 @@
74         jmp_buf my_buf, **me_ptr = me, *next_buf = next;
75         
76         *me_ptr = &my_buf;
77 -       if(setjmp(my_buf) == 0)
78 -               longjmp(*next_buf, 1);
79 +       if(sigsetjmp(my_buf, 1) == 0)
80 +               siglongjmp(*next_buf, 1);
81  }
82  
83  static jmp_buf initial_jmpbuf;
84 @@ -277,14 +277,14 @@
85         int n;
86  
87         *fork_buf_ptr = &initial_jmpbuf;
88 -       n = setjmp(initial_jmpbuf);
89 +       n = sigsetjmp(initial_jmpbuf, 1);
90         if(n == 0)
91                 new_thread_proc((void *) stack, new_thread_handler);
92         else if(n == 1)
93                 remove_sigstack();
94         else if(n == 2){
95                 (*cb_proc)(cb_arg);
96 -               longjmp(*cb_back, 1);
97 +               siglongjmp(*cb_back, 1);
98         }
99         else if(n == 3){
100                 kmalloc_ok = 0;
101 @@ -294,7 +294,7 @@
102                 kmalloc_ok = 0;
103                 return(1);
104         }
105 -       longjmp(**switch_buf, 1);
106 +       siglongjmp(**switch_buf, 1);
107  }
108  
109  void remove_sigstack(void)
110 @@ -316,8 +316,8 @@
111         cb_back = &here;
112  
113         block_signals();
114 -       if(setjmp(here) == 0)
115 -               longjmp(initial_jmpbuf, 2);
116 +       if(sigsetjmp(here, 1) == 0)
117 +               siglongjmp(initial_jmpbuf, 2);
118         unblock_signals();
119  
120         cb_proc = NULL;
121 @@ -328,13 +328,13 @@
122  void halt_skas(void)
123  {
124         block_signals();
125 -       longjmp(initial_jmpbuf, 3);
126 +       siglongjmp(initial_jmpbuf, 3);
127  }
128  
129  void reboot_skas(void)
130  {
131         block_signals();
132 -       longjmp(initial_jmpbuf, 4);
133 +       siglongjmp(initial_jmpbuf, 4);
134  }
135  
136  int new_mm(int from)
137 Index: linux-2.4.20/arch/um/kernel/skas/syscall_kern.c
138 ===================================================================
139 --- linux-2.4.20.orig/arch/um/kernel/skas/syscall_kern.c        2003-10-25 00:35:59.000000000 +0400
140 +++ linux-2.4.20/arch/um/kernel/skas/syscall_kern.c     2003-10-25 00:36:02.000000000 +0400
141 @@ -23,7 +23,8 @@
142         nsyscalls++;
143         syscall = UPT_SYSCALL_NR(&regs->regs);
144  
145 -       if((syscall >= NR_syscalls) || (syscall < 0))
146 +       if((syscall >= NR_syscalls) || (syscall < 0) || 
147 +          (sys_call_table[syscall] == NULL))
148                 res = -ENOSYS;
149         else res = EXECUTE_SYSCALL(syscall, regs);
150  
151 Index: linux-2.4.20/arch/um/kernel/trap_user.c
152 ===================================================================
153 --- linux-2.4.20.orig/arch/um/kernel/trap_user.c        2003-10-25 00:35:59.000000000 +0400
154 +++ linux-2.4.20/arch/um/kernel/trap_user.c     2003-10-25 00:36:02.000000000 +0400
155 @@ -125,7 +125,7 @@
156  {
157         jmp_buf *buf = b;
158  
159 -       longjmp(*buf, val);
160 +       siglongjmp(*buf, val);
161  }
162  
163  /*
164 Index: linux-2.4.20/arch/um/kernel/tt/syscall_kern.c
165 ===================================================================
166 --- linux-2.4.20.orig/arch/um/kernel/tt/syscall_kern.c  2003-10-25 00:35:59.000000000 +0400
167 +++ linux-2.4.20/arch/um/kernel/tt/syscall_kern.c       2003-10-25 00:36:02.000000000 +0400
168 @@ -113,7 +113,8 @@
169         nsyscalls++;
170         syscall = UPT_SYSCALL_NR(&regs->regs);
171  
172 -       if((syscall >= NR_syscalls) || (syscall < 0))
173 +       if((syscall >= NR_syscalls) || (syscall < 0) || 
174 +          (sys_call_table[syscall] == NULL))
175                 res = -ENOSYS;
176         else if(honeypot && check_bogosity(regs))
177                 res = -EFAULT;
178 Index: linux-2.4.20/arch/um/kernel/tt/uaccess_user.c
179 ===================================================================
180 --- linux-2.4.20.orig/arch/um/kernel/tt/uaccess_user.c  2003-10-25 00:35:59.000000000 +0400
181 +++ linux-2.4.20/arch/um/kernel/tt/uaccess_user.c       2003-10-25 00:36:02.000000000 +0400
182 @@ -75,7 +75,7 @@
183         jmp_buf jbuf;
184  
185         *fault_catcher = &jbuf;
186 -       if(setjmp(jbuf) == 0){
187 +       if(sigsetjmp(jbuf, 1) == 0){
188                 ret = strlen(str) + 1;
189         } 
190         else {
191 Index: linux-2.4.20/arch/um/kernel/uaccess_user.c
192 ===================================================================
193 --- linux-2.4.20.orig/arch/um/kernel/uaccess_user.c     2003-10-25 00:35:59.000000000 +0400
194 +++ linux-2.4.20/arch/um/kernel/uaccess_user.c  2003-10-25 00:36:02.000000000 +0400
195 @@ -20,7 +20,7 @@
196  
197         jmp_buf jbuf;
198         *fault_catcher = &jbuf;
199 -       if(setjmp(jbuf) == 0){
200 +       if(sigsetjmp(jbuf, 1) == 0){
201                 (*op)(to, from, n);
202                 ret = 0;
203                 *faulted_out = 0;
204 Index: linux-2.4.20/arch/um/kernel/tt/ptproxy/sysdep.c
205 ===================================================================
206 --- linux-2.4.20.orig/arch/um/kernel/tt/ptproxy/sysdep.c        2003-10-25 00:35:59.000000000 +0400
207 +++ linux-2.4.20/arch/um/kernel/tt/ptproxy/sysdep.c     2003-10-25 00:36:23.000000000 +0400
208 @@ -9,6 +9,7 @@
209  #include <string.h>
210  #include <stdlib.h>
211  #include <signal.h>
212 +#include <errno.h>
213  #include <sys/types.h>
214  #include <sys/ptrace.h>
215  #include <asm/ptrace.h>