diff options
30 files changed, 101 insertions, 70 deletions
diff --git a/arch/alpha/kernel/ptrace.c b/arch/alpha/kernel/ptrace.c index baa903602f6..e2af5eb59bb 100644 --- a/arch/alpha/kernel/ptrace.c +++ b/arch/alpha/kernel/ptrace.c | |||
@@ -269,7 +269,8 @@ void ptrace_disable(struct task_struct *child) | |||
269 | user_disable_single_step(child); | 269 | user_disable_single_step(child); |
270 | } | 270 | } |
271 | 271 | ||
272 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 272 | long arch_ptrace(struct task_struct *child, long request, |
273 | unsigned long addr, unsigned long data) | ||
273 | { | 274 | { |
274 | unsigned long tmp; | 275 | unsigned long tmp; |
275 | size_t copied; | 276 | size_t copied; |
@@ -292,7 +293,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
292 | case PTRACE_PEEKUSR: | 293 | case PTRACE_PEEKUSR: |
293 | force_successful_syscall_return(); | 294 | force_successful_syscall_return(); |
294 | ret = get_reg(child, addr); | 295 | ret = get_reg(child, addr); |
295 | DBG(DBG_MEM, ("peek $%ld->%#lx\n", addr, ret)); | 296 | DBG(DBG_MEM, ("peek $%lu->%#lx\n", addr, ret)); |
296 | break; | 297 | break; |
297 | 298 | ||
298 | /* When I and D space are separate, this will have to be fixed. */ | 299 | /* When I and D space are separate, this will have to be fixed. */ |
@@ -302,7 +303,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
302 | break; | 303 | break; |
303 | 304 | ||
304 | case PTRACE_POKEUSR: /* write the specified register */ | 305 | case PTRACE_POKEUSR: /* write the specified register */ |
305 | DBG(DBG_MEM, ("poke $%ld<-%#lx\n", addr, data)); | 306 | DBG(DBG_MEM, ("poke $%lu<-%#lx\n", addr, data)); |
306 | ret = put_reg(child, addr, data); | 307 | ret = put_reg(child, addr, data); |
307 | break; | 308 | break; |
308 | default: | 309 | default: |
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c index e0cb6370ed1..9bca6165459 100644 --- a/arch/arm/kernel/ptrace.c +++ b/arch/arm/kernel/ptrace.c | |||
@@ -1075,7 +1075,8 @@ out: | |||
1075 | } | 1075 | } |
1076 | #endif | 1076 | #endif |
1077 | 1077 | ||
1078 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 1078 | long arch_ptrace(struct task_struct *child, long request, |
1079 | unsigned long addr, unsigned long data) | ||
1079 | { | 1080 | { |
1080 | int ret; | 1081 | int ret; |
1081 | 1082 | ||
diff --git a/arch/avr32/kernel/ptrace.c b/arch/avr32/kernel/ptrace.c index 5e73c25f8f8..ecea9b6bfab 100644 --- a/arch/avr32/kernel/ptrace.c +++ b/arch/avr32/kernel/ptrace.c | |||
@@ -146,7 +146,8 @@ static int ptrace_setregs(struct task_struct *tsk, const void __user *uregs) | |||
146 | return ret; | 146 | return ret; |
147 | } | 147 | } |
148 | 148 | ||
149 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 149 | long arch_ptrace(struct task_struct *child, long request, |
150 | unsigned long addr, unsigned long data) | ||
150 | { | 151 | { |
151 | int ret; | 152 | int ret; |
152 | 153 | ||
diff --git a/arch/blackfin/kernel/ptrace.c b/arch/blackfin/kernel/ptrace.c index b3583935413..8e3083ccd88 100644 --- a/arch/blackfin/kernel/ptrace.c +++ b/arch/blackfin/kernel/ptrace.c | |||
@@ -240,7 +240,8 @@ void user_disable_single_step(struct task_struct *child) | |||
240 | clear_tsk_thread_flag(child, TIF_SINGLESTEP); | 240 | clear_tsk_thread_flag(child, TIF_SINGLESTEP); |
241 | } | 241 | } |
242 | 242 | ||
243 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 243 | long arch_ptrace(struct task_struct *child, long request, |
244 | unsigned long addr, unsigned long data) | ||
244 | { | 245 | { |
245 | int ret; | 246 | int ret; |
246 | unsigned long __user *datap = (unsigned long __user *)data; | 247 | unsigned long __user *datap = (unsigned long __user *)data; |
diff --git a/arch/cris/arch-v10/kernel/ptrace.c b/arch/cris/arch-v10/kernel/ptrace.c index e70c804e937..d411e024e05 100644 --- a/arch/cris/arch-v10/kernel/ptrace.c +++ b/arch/cris/arch-v10/kernel/ptrace.c | |||
@@ -76,7 +76,8 @@ ptrace_disable(struct task_struct *child) | |||
76 | * (in user space) where the result of the ptrace call is written (instead of | 76 | * (in user space) where the result of the ptrace call is written (instead of |
77 | * being returned). | 77 | * being returned). |
78 | */ | 78 | */ |
79 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 79 | long arch_ptrace(struct task_struct *child, long request, |
80 | unsigned long addr, unsigned long data) | ||
80 | { | 81 | { |
81 | int ret; | 82 | int ret; |
82 | unsigned long __user *datap = (unsigned long __user *)data; | 83 | unsigned long __user *datap = (unsigned long __user *)data; |
@@ -141,7 +142,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
141 | break; | 142 | break; |
142 | } | 143 | } |
143 | 144 | ||
144 | data += sizeof(long); | 145 | data += sizeof(unsigned long); |
145 | } | 146 | } |
146 | 147 | ||
147 | break; | 148 | break; |
@@ -165,7 +166,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
165 | } | 166 | } |
166 | 167 | ||
167 | put_reg(child, i, tmp); | 168 | put_reg(child, i, tmp); |
168 | data += sizeof(long); | 169 | data += sizeof(unsigned long); |
169 | } | 170 | } |
170 | 171 | ||
171 | break; | 172 | break; |
diff --git a/arch/cris/arch-v32/kernel/ptrace.c b/arch/cris/arch-v32/kernel/ptrace.c index f4ebd1e7d0f..3e058a12175 100644 --- a/arch/cris/arch-v32/kernel/ptrace.c +++ b/arch/cris/arch-v32/kernel/ptrace.c | |||
@@ -126,7 +126,8 @@ ptrace_disable(struct task_struct *child) | |||
126 | } | 126 | } |
127 | 127 | ||
128 | 128 | ||
129 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 129 | long arch_ptrace(struct task_struct *child, long request, |
130 | unsigned long addr, unsigned long data) | ||
130 | { | 131 | { |
131 | int ret; | 132 | int ret; |
132 | unsigned long __user *datap = (unsigned long __user *)data; | 133 | unsigned long __user *datap = (unsigned long __user *)data; |
diff --git a/arch/frv/kernel/ptrace.c b/arch/frv/kernel/ptrace.c index fac028936a0..e9dbfad9358 100644 --- a/arch/frv/kernel/ptrace.c +++ b/arch/frv/kernel/ptrace.c | |||
@@ -254,7 +254,8 @@ void ptrace_disable(struct task_struct *child) | |||
254 | user_disable_single_step(child); | 254 | user_disable_single_step(child); |
255 | } | 255 | } |
256 | 256 | ||
257 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 257 | long arch_ptrace(struct task_struct *child, long request, |
258 | unsigned long addr, unsigned long data) | ||
258 | { | 259 | { |
259 | unsigned long tmp; | 260 | unsigned long tmp; |
260 | int ret; | 261 | int ret; |
diff --git a/arch/h8300/kernel/ptrace.c b/arch/h8300/kernel/ptrace.c index df114122ebd..ef1aa0b8b20 100644 --- a/arch/h8300/kernel/ptrace.c +++ b/arch/h8300/kernel/ptrace.c | |||
@@ -50,7 +50,8 @@ void ptrace_disable(struct task_struct *child) | |||
50 | user_disable_single_step(child); | 50 | user_disable_single_step(child); |
51 | } | 51 | } |
52 | 52 | ||
53 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 53 | long arch_ptrace(struct task_struct *child, long request, |
54 | unsigned long addr, unsigned long data) | ||
54 | { | 55 | { |
55 | int ret; | 56 | int ret; |
56 | 57 | ||
@@ -120,7 +121,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
120 | ret = -EFAULT; | 121 | ret = -EFAULT; |
121 | break; | 122 | break; |
122 | } | 123 | } |
123 | data += sizeof(long); | 124 | data += sizeof(unsigned long); |
124 | } | 125 | } |
125 | ret = 0; | 126 | ret = 0; |
126 | break; | 127 | break; |
@@ -135,7 +136,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
135 | break; | 136 | break; |
136 | } | 137 | } |
137 | h8300_put_reg(child, i, tmp); | 138 | h8300_put_reg(child, i, tmp); |
138 | data += sizeof(long); | 139 | data += sizeof(unsigned long); |
139 | } | 140 | } |
140 | ret = 0; | 141 | ret = 0; |
141 | break; | 142 | break; |
diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c index 7c7909f9bc9..8848f43d819 100644 --- a/arch/ia64/kernel/ptrace.c +++ b/arch/ia64/kernel/ptrace.c | |||
@@ -1177,7 +1177,8 @@ ptrace_disable (struct task_struct *child) | |||
1177 | } | 1177 | } |
1178 | 1178 | ||
1179 | long | 1179 | long |
1180 | arch_ptrace (struct task_struct *child, long request, long addr, long data) | 1180 | arch_ptrace (struct task_struct *child, long request, |
1181 | unsigned long addr, unsigned long data) | ||
1181 | { | 1182 | { |
1182 | switch (request) { | 1183 | switch (request) { |
1183 | case PTRACE_PEEKTEXT: | 1184 | case PTRACE_PEEKTEXT: |
diff --git a/arch/m32r/kernel/ptrace.c b/arch/m32r/kernel/ptrace.c index 0021ade4cba..5e00e0a41ff 100644 --- a/arch/m32r/kernel/ptrace.c +++ b/arch/m32r/kernel/ptrace.c | |||
@@ -622,7 +622,8 @@ void ptrace_disable(struct task_struct *child) | |||
622 | } | 622 | } |
623 | 623 | ||
624 | long | 624 | long |
625 | arch_ptrace(struct task_struct *child, long request, long addr, long data) | 625 | arch_ptrace(struct task_struct *child, long request, |
626 | unsigned long addr, unsigned long data) | ||
626 | { | 627 | { |
627 | int ret; | 628 | int ret; |
628 | 629 | ||
diff --git a/arch/m68k/kernel/ptrace.c b/arch/m68k/kernel/ptrace.c index 616e59752c2..583f59fcc36 100644 --- a/arch/m68k/kernel/ptrace.c +++ b/arch/m68k/kernel/ptrace.c | |||
@@ -156,7 +156,8 @@ void user_disable_single_step(struct task_struct *child) | |||
156 | singlestep_disable(child); | 156 | singlestep_disable(child); |
157 | } | 157 | } |
158 | 158 | ||
159 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 159 | long arch_ptrace(struct task_struct *child, long request, |
160 | unsigned long addr, unsigned long data) | ||
160 | { | 161 | { |
161 | unsigned long tmp; | 162 | unsigned long tmp; |
162 | int i, ret = 0; | 163 | int i, ret = 0; |
@@ -200,7 +201,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
200 | * into internal fpu reg representation | 201 | * into internal fpu reg representation |
201 | */ | 202 | */ |
202 | if (FPU_IS_EMU && (addr < 45) && !(addr % 3)) { | 203 | if (FPU_IS_EMU && (addr < 45) && !(addr % 3)) { |
203 | data = (unsigned long)data << 15; | 204 | data <<= 15; |
204 | data = (data & 0xffff0000) | | 205 | data = (data & 0xffff0000) | |
205 | ((data & 0x0000ffff) >> 1); | 206 | ((data & 0x0000ffff) >> 1); |
206 | } | 207 | } |
@@ -215,7 +216,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
215 | ret = put_user(tmp, (unsigned long *)data); | 216 | ret = put_user(tmp, (unsigned long *)data); |
216 | if (ret) | 217 | if (ret) |
217 | break; | 218 | break; |
218 | data += sizeof(long); | 219 | data += sizeof(unsigned long); |
219 | } | 220 | } |
220 | break; | 221 | break; |
221 | 222 | ||
@@ -229,7 +230,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
229 | tmp |= get_reg(child, PT_SR) & ~SR_MASK; | 230 | tmp |= get_reg(child, PT_SR) & ~SR_MASK; |
230 | } | 231 | } |
231 | put_reg(child, i, tmp); | 232 | put_reg(child, i, tmp); |
232 | data += sizeof(long); | 233 | data += sizeof(unsigned long); |
233 | } | 234 | } |
234 | break; | 235 | break; |
235 | 236 | ||
diff --git a/arch/m68knommu/kernel/ptrace.c b/arch/m68knommu/kernel/ptrace.c index 6fe7c38cd55..7dbb08f5534 100644 --- a/arch/m68knommu/kernel/ptrace.c +++ b/arch/m68knommu/kernel/ptrace.c | |||
@@ -112,7 +112,8 @@ void ptrace_disable(struct task_struct *child) | |||
112 | user_disable_single_step(child); | 112 | user_disable_single_step(child); |
113 | } | 113 | } |
114 | 114 | ||
115 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 115 | long arch_ptrace(struct task_struct *child, long request, |
116 | unsigned long addr, unsigned long data) | ||
116 | { | 117 | { |
117 | int ret; | 118 | int ret; |
118 | 119 | ||
@@ -184,7 +185,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
184 | ret = -EFAULT; | 185 | ret = -EFAULT; |
185 | break; | 186 | break; |
186 | } | 187 | } |
187 | data += sizeof(long); | 188 | data += sizeof(unsigned long); |
188 | } | 189 | } |
189 | ret = 0; | 190 | ret = 0; |
190 | break; | 191 | break; |
@@ -204,7 +205,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
204 | tmp |= get_reg(child, PT_SR) & ~(SR_MASK << 16); | 205 | tmp |= get_reg(child, PT_SR) & ~(SR_MASK << 16); |
205 | } | 206 | } |
206 | put_reg(child, i, tmp); | 207 | put_reg(child, i, tmp); |
207 | data += sizeof(long); | 208 | data += sizeof(unsigned long); |
208 | } | 209 | } |
209 | ret = 0; | 210 | ret = 0; |
210 | break; | 211 | break; |
diff --git a/arch/microblaze/kernel/ptrace.c b/arch/microblaze/kernel/ptrace.c index dc03ffc8174..3544bc15740 100644 --- a/arch/microblaze/kernel/ptrace.c +++ b/arch/microblaze/kernel/ptrace.c | |||
@@ -73,7 +73,8 @@ static microblaze_reg_t *reg_save_addr(unsigned reg_offs, | |||
73 | return (microblaze_reg_t *)((char *)regs + reg_offs); | 73 | return (microblaze_reg_t *)((char *)regs + reg_offs); |
74 | } | 74 | } |
75 | 75 | ||
76 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 76 | long arch_ptrace(struct task_struct *child, long request, |
77 | unsigned long addr, unsigned long data) | ||
77 | { | 78 | { |
78 | int rval; | 79 | int rval; |
79 | unsigned long val = 0; | 80 | unsigned long val = 0; |
diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c index c8777333e19..95c3ae8b198 100644 --- a/arch/mips/kernel/ptrace.c +++ b/arch/mips/kernel/ptrace.c | |||
@@ -255,7 +255,8 @@ int ptrace_set_watch_regs(struct task_struct *child, | |||
255 | return 0; | 255 | return 0; |
256 | } | 256 | } |
257 | 257 | ||
258 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 258 | long arch_ptrace(struct task_struct *child, long request, |
259 | unsigned long addr, unsigned long data) | ||
259 | { | 260 | { |
260 | int ret; | 261 | int ret; |
261 | 262 | ||
diff --git a/arch/mn10300/kernel/ptrace.c b/arch/mn10300/kernel/ptrace.c index cf847dabc1b..ec4b41439e9 100644 --- a/arch/mn10300/kernel/ptrace.c +++ b/arch/mn10300/kernel/ptrace.c | |||
@@ -295,7 +295,8 @@ void ptrace_disable(struct task_struct *child) | |||
295 | /* | 295 | /* |
296 | * handle the arch-specific side of process tracing | 296 | * handle the arch-specific side of process tracing |
297 | */ | 297 | */ |
298 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 298 | long arch_ptrace(struct task_struct *child, long request, |
299 | unsigned long addr, unsigned long data) | ||
299 | { | 300 | { |
300 | unsigned long tmp; | 301 | unsigned long tmp; |
301 | int ret; | 302 | int ret; |
diff --git a/arch/parisc/kernel/ptrace.c b/arch/parisc/kernel/ptrace.c index c4f49e45129..03920db4af4 100644 --- a/arch/parisc/kernel/ptrace.c +++ b/arch/parisc/kernel/ptrace.c | |||
@@ -110,7 +110,8 @@ void user_enable_block_step(struct task_struct *task) | |||
110 | pa_psw(task)->l = 0; | 110 | pa_psw(task)->l = 0; |
111 | } | 111 | } |
112 | 112 | ||
113 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 113 | long arch_ptrace(struct task_struct *child, long request, |
114 | unsigned long addr, unsigned long data) | ||
114 | { | 115 | { |
115 | unsigned long tmp; | 116 | unsigned long tmp; |
116 | long ret = -EIO; | 117 | long ret = -EIO; |
@@ -120,8 +121,8 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
120 | /* Read the word at location addr in the USER area. For ptraced | 121 | /* Read the word at location addr in the USER area. For ptraced |
121 | processes, the kernel saves all regs on a syscall. */ | 122 | processes, the kernel saves all regs on a syscall. */ |
122 | case PTRACE_PEEKUSR: | 123 | case PTRACE_PEEKUSR: |
123 | if ((addr & (sizeof(long)-1)) || | 124 | if ((addr & (sizeof(unsigned long)-1)) || |
124 | (unsigned long) addr >= sizeof(struct pt_regs)) | 125 | addr >= sizeof(struct pt_regs)) |
125 | break; | 126 | break; |
126 | tmp = *(unsigned long *) ((char *) task_regs(child) + addr); | 127 | tmp = *(unsigned long *) ((char *) task_regs(child) + addr); |
127 | ret = put_user(tmp, (unsigned long *) data); | 128 | ret = put_user(tmp, (unsigned long *) data); |
@@ -151,8 +152,8 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
151 | break; | 152 | break; |
152 | } | 153 | } |
153 | 154 | ||
154 | if ((addr & (sizeof(long)-1)) || | 155 | if ((addr & (sizeof(unsigned long)-1)) || |
155 | (unsigned long) addr >= sizeof(struct pt_regs)) | 156 | addr >= sizeof(struct pt_regs)) |
156 | break; | 157 | break; |
157 | if ((addr >= PT_GR1 && addr <= PT_GR31) || | 158 | if ((addr >= PT_GR1 && addr <= PT_GR31) || |
158 | addr == PT_IAOQ0 || addr == PT_IAOQ1 || | 159 | addr == PT_IAOQ0 || addr == PT_IAOQ1 || |
diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c index 286d9783d93..136763568a7 100644 --- a/arch/powerpc/kernel/ptrace.c +++ b/arch/powerpc/kernel/ptrace.c | |||
@@ -1406,8 +1406,8 @@ static long ppc_del_hwdebug(struct task_struct *child, long addr, long data) | |||
1406 | * Here are the old "legacy" powerpc specific getregs/setregs ptrace calls, | 1406 | * Here are the old "legacy" powerpc specific getregs/setregs ptrace calls, |
1407 | * we mark them as obsolete now, they will be removed in a future version | 1407 | * we mark them as obsolete now, they will be removed in a future version |
1408 | */ | 1408 | */ |
1409 | static long arch_ptrace_old(struct task_struct *child, long request, long addr, | 1409 | static long arch_ptrace_old(struct task_struct *child, long request, |
1410 | long data) | 1410 | unsigned long addr, unsigned long data) |
1411 | { | 1411 | { |
1412 | switch (request) { | 1412 | switch (request) { |
1413 | case PPC_PTRACE_GETREGS: /* Get GPRs 0 - 31. */ | 1413 | case PPC_PTRACE_GETREGS: /* Get GPRs 0 - 31. */ |
@@ -1434,7 +1434,8 @@ static long arch_ptrace_old(struct task_struct *child, long request, long addr, | |||
1434 | return -EPERM; | 1434 | return -EPERM; |
1435 | } | 1435 | } |
1436 | 1436 | ||
1437 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 1437 | long arch_ptrace(struct task_struct *child, long request, |
1438 | unsigned long addr, unsigned long data) | ||
1438 | { | 1439 | { |
1439 | int ret = -EPERM; | 1440 | int ret = -EPERM; |
1440 | 1441 | ||
@@ -1446,11 +1447,11 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
1446 | ret = -EIO; | 1447 | ret = -EIO; |
1447 | /* convert to index and check */ | 1448 | /* convert to index and check */ |
1448 | #ifdef CONFIG_PPC32 | 1449 | #ifdef CONFIG_PPC32 |
1449 | index = (unsigned long) addr >> 2; | 1450 | index = addr >> 2; |
1450 | if ((addr & 3) || (index > PT_FPSCR) | 1451 | if ((addr & 3) || (index > PT_FPSCR) |
1451 | || (child->thread.regs == NULL)) | 1452 | || (child->thread.regs == NULL)) |
1452 | #else | 1453 | #else |
1453 | index = (unsigned long) addr >> 3; | 1454 | index = addr >> 3; |
1454 | if ((addr & 7) || (index > PT_FPSCR)) | 1455 | if ((addr & 7) || (index > PT_FPSCR)) |
1455 | #endif | 1456 | #endif |
1456 | break; | 1457 | break; |
@@ -1474,11 +1475,11 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
1474 | ret = -EIO; | 1475 | ret = -EIO; |
1475 | /* convert to index and check */ | 1476 | /* convert to index and check */ |
1476 | #ifdef CONFIG_PPC32 | 1477 | #ifdef CONFIG_PPC32 |
1477 | index = (unsigned long) addr >> 2; | 1478 | index = addr >> 2; |
1478 | if ((addr & 3) || (index > PT_FPSCR) | 1479 | if ((addr & 3) || (index > PT_FPSCR) |
1479 | || (child->thread.regs == NULL)) | 1480 | || (child->thread.regs == NULL)) |
1480 | #else | 1481 | #else |
1481 | index = (unsigned long) addr >> 3; | 1482 | index = addr >> 3; |
1482 | if ((addr & 7) || (index > PT_FPSCR)) | 1483 | if ((addr & 7) || (index > PT_FPSCR)) |
1483 | #endif | 1484 | #endif |
1484 | break; | 1485 | break; |
diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c index 83339d33c4b..019bb714db4 100644 --- a/arch/s390/kernel/ptrace.c +++ b/arch/s390/kernel/ptrace.c | |||
@@ -343,7 +343,8 @@ poke_user(struct task_struct *child, addr_t addr, addr_t data) | |||
343 | return __poke_user(child, addr, data); | 343 | return __poke_user(child, addr, data); |
344 | } | 344 | } |
345 | 345 | ||
346 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 346 | long arch_ptrace(struct task_struct *child, long request, |
347 | unsigned long addr, unsigned long data) | ||
347 | { | 348 | { |
348 | ptrace_area parea; | 349 | ptrace_area parea; |
349 | int copied, ret; | 350 | int copied, ret; |
diff --git a/arch/score/kernel/ptrace.c b/arch/score/kernel/ptrace.c index 174c6422b09..894dcbf7209 100644 --- a/arch/score/kernel/ptrace.c +++ b/arch/score/kernel/ptrace.c | |||
@@ -325,7 +325,8 @@ void ptrace_disable(struct task_struct *child) | |||
325 | } | 325 | } |
326 | 326 | ||
327 | long | 327 | long |
328 | arch_ptrace(struct task_struct *child, long request, long addr, long data) | 328 | arch_ptrace(struct task_struct *child, long request, |
329 | unsigned long addr, unsigned long data) | ||
329 | { | 330 | { |
330 | int ret; | 331 | int ret; |
331 | unsigned long __user *datap = (void __user *)data; | 332 | unsigned long __user *datap = (void __user *)data; |
diff --git a/arch/sh/kernel/ptrace_32.c b/arch/sh/kernel/ptrace_32.c index 2cd42b58cb2..34bf03745e8 100644 --- a/arch/sh/kernel/ptrace_32.c +++ b/arch/sh/kernel/ptrace_32.c | |||
@@ -365,7 +365,8 @@ const struct user_regset_view *task_user_regset_view(struct task_struct *task) | |||
365 | return &user_sh_native_view; | 365 | return &user_sh_native_view; |
366 | } | 366 | } |
367 | 367 | ||
368 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 368 | long arch_ptrace(struct task_struct *child, long request, |
369 | unsigned long addr, unsigned long data) | ||
369 | { | 370 | { |
370 | struct user * dummy = NULL; | 371 | struct user * dummy = NULL; |
371 | unsigned long __user *datap = (unsigned long __user *)data; | 372 | unsigned long __user *datap = (unsigned long __user *)data; |
@@ -383,17 +384,17 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
383 | 384 | ||
384 | if (addr < sizeof(struct pt_regs)) | 385 | if (addr < sizeof(struct pt_regs)) |
385 | tmp = get_stack_long(child, addr); | 386 | tmp = get_stack_long(child, addr); |
386 | else if (addr >= (long) &dummy->fpu && | 387 | else if (addr >= (unsigned long) &dummy->fpu && |
387 | addr < (long) &dummy->u_fpvalid) { | 388 | addr < (unsigned long) &dummy->u_fpvalid) { |
388 | if (!tsk_used_math(child)) { | 389 | if (!tsk_used_math(child)) { |
389 | if (addr == (long)&dummy->fpu.fpscr) | 390 | if (addr == (unsigned long)&dummy->fpu.fpscr) |
390 | tmp = FPSCR_INIT; | 391 | tmp = FPSCR_INIT; |
391 | else | 392 | else |
392 | tmp = 0; | 393 | tmp = 0; |
393 | } else | 394 | } else |
394 | tmp = ((long *)child->thread.xstate) | 395 | tmp = ((unsigned long *)child->thread.xstate) |
395 | [(addr - (long)&dummy->fpu) >> 2]; | 396 | [(addr - (long)&dummy->fpu) >> 2]; |
396 | } else if (addr == (long) &dummy->u_fpvalid) | 397 | } else if (addr == (unsigned long) &dummy->u_fpvalid) |
397 | tmp = !!tsk_used_math(child); | 398 | tmp = !!tsk_used_math(child); |
398 | else if (addr == PT_TEXT_ADDR) | 399 | else if (addr == PT_TEXT_ADDR) |
399 | tmp = child->mm->start_code; | 400 | tmp = child->mm->start_code; |
@@ -417,13 +418,13 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
417 | 418 | ||
418 | if (addr < sizeof(struct pt_regs)) | 419 | if (addr < sizeof(struct pt_regs)) |
419 | ret = put_stack_long(child, addr, data); | 420 | ret = put_stack_long(child, addr, data); |
420 | else if (addr >= (long) &dummy->fpu && | 421 | else if (addr >= (unsigned long) &dummy->fpu && |
421 | addr < (long) &dummy->u_fpvalid) { | 422 | addr < (unsigned long) &dummy->u_fpvalid) { |
422 | set_stopped_child_used_math(child); | 423 | set_stopped_child_used_math(child); |
423 | ((long *)child->thread.xstate) | 424 | ((unsigned long *)child->thread.xstate) |
424 | [(addr - (long)&dummy->fpu) >> 2] = data; | 425 | [(addr - (long)&dummy->fpu) >> 2] = data; |
425 | ret = 0; | 426 | ret = 0; |
426 | } else if (addr == (long) &dummy->u_fpvalid) { | 427 | } else if (addr == (unsigned long) &dummy->u_fpvalid) { |
427 | conditional_stopped_child_used_math(data, child); | 428 | conditional_stopped_child_used_math(data, child); |
428 | ret = 0; | 429 | ret = 0; |
429 | } | 430 | } |
diff --git a/arch/sh/kernel/ptrace_64.c b/arch/sh/kernel/ptrace_64.c index e0fb065914a..4840716c196 100644 --- a/arch/sh/kernel/ptrace_64.c +++ b/arch/sh/kernel/ptrace_64.c | |||
@@ -383,7 +383,8 @@ const struct user_regset_view *task_user_regset_view(struct task_struct *task) | |||
383 | return &user_sh64_native_view; | 383 | return &user_sh64_native_view; |
384 | } | 384 | } |
385 | 385 | ||
386 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 386 | long arch_ptrace(struct task_struct *child, long request, |
387 | unsigned long addr, unsigned long data) | ||
387 | { | 388 | { |
388 | int ret; | 389 | int ret; |
389 | 390 | ||
@@ -471,7 +472,8 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
471 | return ret; | 472 | return ret; |
472 | } | 473 | } |
473 | 474 | ||
474 | asmlinkage int sh64_ptrace(long request, long pid, long addr, long data) | 475 | asmlinkage int sh64_ptrace(long request, long pid, |
476 | unsigned long addr, unsigned long data) | ||
475 | { | 477 | { |
476 | #define WPC_DBRMODE 0x0d104008 | 478 | #define WPC_DBRMODE 0x0d104008 |
477 | static unsigned long first_call; | 479 | static unsigned long first_call; |
diff --git a/arch/sparc/kernel/ptrace_32.c b/arch/sparc/kernel/ptrace_32.c index e608f397e11..e08ba4a46ac 100644 --- a/arch/sparc/kernel/ptrace_32.c +++ b/arch/sparc/kernel/ptrace_32.c | |||
@@ -323,7 +323,8 @@ const struct user_regset_view *task_user_regset_view(struct task_struct *task) | |||
323 | return &user_sparc32_view; | 323 | return &user_sparc32_view; |
324 | } | 324 | } |
325 | 325 | ||
326 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 326 | long arch_ptrace(struct task_struct *child, long request, |
327 | unsigned long addr, unsigned long data) | ||
327 | { | 328 | { |
328 | unsigned long addr2 = current->thread.kregs->u_regs[UREG_I4]; | 329 | unsigned long addr2 = current->thread.kregs->u_regs[UREG_I4]; |
329 | const struct user_regset_view *view; | 330 | const struct user_regset_view *view; |
diff --git a/arch/sparc/kernel/ptrace_64.c b/arch/sparc/kernel/ptrace_64.c index aa90da08bf6..d9db5a4dfef 100644 --- a/arch/sparc/kernel/ptrace_64.c +++ b/arch/sparc/kernel/ptrace_64.c | |||
@@ -969,7 +969,8 @@ struct fps { | |||
969 | unsigned long fsr; | 969 | unsigned long fsr; |
970 | }; | 970 | }; |
971 | 971 | ||
972 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 972 | long arch_ptrace(struct task_struct *child, long request, |
973 | unsigned long addr, unsigned long data) | ||
973 | { | 974 | { |
974 | const struct user_regset_view *view = task_user_regset_view(current); | 975 | const struct user_regset_view *view = task_user_regset_view(current); |
975 | unsigned long addr2 = task_pt_regs(current)->u_regs[UREG_I4]; | 976 | unsigned long addr2 = task_pt_regs(current)->u_regs[UREG_I4]; |
@@ -977,8 +978,8 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
977 | struct fps __user *fps; | 978 | struct fps __user *fps; |
978 | int ret; | 979 | int ret; |
979 | 980 | ||
980 | pregs = (struct pt_regs __user *) (unsigned long) addr; | 981 | pregs = (struct pt_regs __user *) addr; |
981 | fps = (struct fps __user *) (unsigned long) addr; | 982 | fps = (struct fps __user *) addr; |
982 | 983 | ||
983 | switch (request) { | 984 | switch (request) { |
984 | case PTRACE_PEEKUSR: | 985 | case PTRACE_PEEKUSR: |
diff --git a/arch/tile/kernel/ptrace.c b/arch/tile/kernel/ptrace.c index 5b20c2874d5..f634729211d 100644 --- a/arch/tile/kernel/ptrace.c +++ b/arch/tile/kernel/ptrace.c | |||
@@ -45,7 +45,8 @@ void ptrace_disable(struct task_struct *child) | |||
45 | clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); | 45 | clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); |
46 | } | 46 | } |
47 | 47 | ||
48 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 48 | long arch_ptrace(struct task_struct *child, long request, |
49 | unsigned long addr, unsigned long data) | ||
49 | { | 50 | { |
50 | unsigned long __user *datap = (long __user __force *)data; | 51 | unsigned long __user *datap = (long __user __force *)data; |
51 | unsigned long tmp; | 52 | unsigned long tmp; |
@@ -98,7 +99,8 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
98 | if (!access_ok(VERIFY_WRITE, datap, PTREGS_SIZE)) | 99 | if (!access_ok(VERIFY_WRITE, datap, PTREGS_SIZE)) |
99 | break; | 100 | break; |
100 | childregs = (long *)task_pt_regs(child); | 101 | childregs = (long *)task_pt_regs(child); |
101 | for (i = 0; i < sizeof(struct pt_regs)/sizeof(long); ++i) { | 102 | for (i = 0; i < sizeof(struct pt_regs)/sizeof(unsigned long); |
103 | ++i) { | ||
102 | ret = __put_user(childregs[i], &datap[i]); | 104 | ret = __put_user(childregs[i], &datap[i]); |
103 | if (ret != 0) | 105 | if (ret != 0) |
104 | break; | 106 | break; |
@@ -109,7 +111,8 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
109 | if (!access_ok(VERIFY_READ, datap, PTREGS_SIZE)) | 111 | if (!access_ok(VERIFY_READ, datap, PTREGS_SIZE)) |
110 | break; | 112 | break; |
111 | childregs = (long *)task_pt_regs(child); | 113 | childregs = (long *)task_pt_regs(child); |
112 | for (i = 0; i < sizeof(struct pt_regs)/sizeof(long); ++i) { | 114 | for (i = 0; i < sizeof(struct pt_regs)/sizeof(unsigned long); |
115 | ++i) { | ||
113 | ret = __get_user(childregs[i], &datap[i]); | 116 | ret = __get_user(childregs[i], &datap[i]); |
114 | if (ret != 0) | 117 | if (ret != 0) |
115 | break; | 118 | break; |
diff --git a/arch/um/kernel/ptrace.c b/arch/um/kernel/ptrace.c index e0510496596..963d82bdec0 100644 --- a/arch/um/kernel/ptrace.c +++ b/arch/um/kernel/ptrace.c | |||
@@ -42,10 +42,11 @@ void ptrace_disable(struct task_struct *child) | |||
42 | extern int peek_user(struct task_struct * child, long addr, long data); | 42 | extern int peek_user(struct task_struct * child, long addr, long data); |
43 | extern int poke_user(struct task_struct * child, long addr, long data); | 43 | extern int poke_user(struct task_struct * child, long addr, long data); |
44 | 44 | ||
45 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 45 | long arch_ptrace(struct task_struct *child, long request, |
46 | unsigned long addr, unsigned long data) | ||
46 | { | 47 | { |
47 | int i, ret; | 48 | int i, ret; |
48 | unsigned long __user *p = (void __user *)(unsigned long)data; | 49 | unsigned long __user *p = (void __user *)data; |
49 | 50 | ||
50 | switch (request) { | 51 | switch (request) { |
51 | /* read word at location addr. */ | 52 | /* read word at location addr. */ |
diff --git a/arch/um/sys-i386/ptrace.c b/arch/um/sys-i386/ptrace.c index c9b176534d6..d23b2d3ea38 100644 --- a/arch/um/sys-i386/ptrace.c +++ b/arch/um/sys-i386/ptrace.c | |||
@@ -203,8 +203,8 @@ int set_fpxregs(struct user_fxsr_struct __user *buf, struct task_struct *child) | |||
203 | (unsigned long *) &fpregs); | 203 | (unsigned long *) &fpregs); |
204 | } | 204 | } |
205 | 205 | ||
206 | long subarch_ptrace(struct task_struct *child, long request, long addr, | 206 | long subarch_ptrace(struct task_struct *child, long request, |
207 | long data) | 207 | unsigned long addr, unsigned long data) |
208 | { | 208 | { |
209 | return -EIO; | 209 | return -EIO; |
210 | } | 210 | } |
diff --git a/arch/um/sys-x86_64/ptrace.c b/arch/um/sys-x86_64/ptrace.c index f3458d7d1c5..67e63680df2 100644 --- a/arch/um/sys-x86_64/ptrace.c +++ b/arch/um/sys-x86_64/ptrace.c | |||
@@ -175,8 +175,8 @@ int set_fpregs(struct user_i387_struct __user *buf, struct task_struct *child) | |||
175 | return restore_fp_registers(userspace_pid[cpu], fpregs); | 175 | return restore_fp_registers(userspace_pid[cpu], fpregs); |
176 | } | 176 | } |
177 | 177 | ||
178 | long subarch_ptrace(struct task_struct *child, long request, long addr, | 178 | long subarch_ptrace(struct task_struct *child, long request, |
179 | long data) | 179 | unsigned long addr, unsigned long data) |
180 | { | 180 | { |
181 | int ret = -EIO; | 181 | int ret = -EIO; |
182 | 182 | ||
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c index 70c4872cd8a..1a7ca045920 100644 --- a/arch/x86/kernel/ptrace.c +++ b/arch/x86/kernel/ptrace.c | |||
@@ -801,7 +801,8 @@ void ptrace_disable(struct task_struct *child) | |||
801 | static const struct user_regset_view user_x86_32_view; /* Initialized below. */ | 801 | static const struct user_regset_view user_x86_32_view; /* Initialized below. */ |
802 | #endif | 802 | #endif |
803 | 803 | ||
804 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 804 | long arch_ptrace(struct task_struct *child, long request, |
805 | unsigned long addr, unsigned long data) | ||
805 | { | 806 | { |
806 | int ret; | 807 | int ret; |
807 | unsigned long __user *datap = (unsigned long __user *)data; | 808 | unsigned long __user *datap = (unsigned long __user *)data; |
@@ -888,14 +889,14 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
888 | 889 | ||
889 | #if defined CONFIG_X86_32 || defined CONFIG_IA32_EMULATION | 890 | #if defined CONFIG_X86_32 || defined CONFIG_IA32_EMULATION |
890 | case PTRACE_GET_THREAD_AREA: | 891 | case PTRACE_GET_THREAD_AREA: |
891 | if (addr < 0) | 892 | if ((int) addr < 0) |
892 | return -EIO; | 893 | return -EIO; |
893 | ret = do_get_thread_area(child, addr, | 894 | ret = do_get_thread_area(child, addr, |
894 | (struct user_desc __user *) data); | 895 | (struct user_desc __user *) data); |
895 | break; | 896 | break; |
896 | 897 | ||
897 | case PTRACE_SET_THREAD_AREA: | 898 | case PTRACE_SET_THREAD_AREA: |
898 | if (addr < 0) | 899 | if ((int) addr < 0) |
899 | return -EIO; | 900 | return -EIO; |
900 | ret = do_set_thread_area(child, addr, | 901 | ret = do_set_thread_area(child, addr, |
901 | (struct user_desc __user *) data, 0); | 902 | (struct user_desc __user *) data, 0); |
diff --git a/arch/xtensa/kernel/ptrace.c b/arch/xtensa/kernel/ptrace.c index 9d4e1ceb3f0..af9ba80f254 100644 --- a/arch/xtensa/kernel/ptrace.c +++ b/arch/xtensa/kernel/ptrace.c | |||
@@ -256,7 +256,8 @@ int ptrace_pokeusr(struct task_struct *child, long regno, long val) | |||
256 | return 0; | 256 | return 0; |
257 | } | 257 | } |
258 | 258 | ||
259 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 259 | long arch_ptrace(struct task_struct *child, long request, |
260 | unsigned long addr, unsigned long data) | ||
260 | { | 261 | { |
261 | int ret = -EPERM; | 262 | int ret = -EPERM; |
262 | 263 | ||
diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h index 67a4cd77c35..092a04f874a 100644 --- a/include/linux/ptrace.h +++ b/include/linux/ptrace.h | |||
@@ -100,7 +100,8 @@ | |||
100 | #include <linux/sched.h> /* For struct task_struct. */ | 100 | #include <linux/sched.h> /* For struct task_struct. */ |
101 | 101 | ||
102 | 102 | ||
103 | extern long arch_ptrace(struct task_struct *child, long request, long addr, long data); | 103 | extern long arch_ptrace(struct task_struct *child, long request, |
104 | unsigned long addr, unsigned long data); | ||
104 | extern int ptrace_traceme(void); | 105 | extern int ptrace_traceme(void); |
105 | extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst, int len); | 106 | extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst, int len); |
106 | extern int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len); | 107 | extern int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len); |