Commit 9b05a69e0534ec70bc94921936ffa05b330507cb

Authored by Namhyung Kim
Committed by Linus Torvalds
1 parent 9fed81dc40

ptrace: change signature of arch_ptrace()

Fix up the arguments to arch_ptrace() to take account of the fact that
@addr and @data are now unsigned long rather than long as of a preceding
patch in this series.

Signed-off-by: Namhyung Kim <namhyung@gmail.com>
Cc: <linux-arch@vger.kernel.org>
Acked-by: Roland McGrath <roland@redhat.com>
Acked-by: David Howells <dhowells@redhat.com>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 30 changed files with 101 additions and 70 deletions Side-by-side Diff

arch/alpha/kernel/ptrace.c
... ... @@ -269,7 +269,8 @@
269 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 275 unsigned long tmp;
275 276 size_t copied;
... ... @@ -292,7 +293,7 @@
292 293 case PTRACE_PEEKUSR:
293 294 force_successful_syscall_return();
294 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 297 break;
297 298  
298 299 /* When I and D space are separate, this will have to be fixed. */
... ... @@ -302,7 +303,7 @@
302 303 break;
303 304  
304 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 307 ret = put_reg(child, addr, data);
307 308 break;
308 309 default:
arch/arm/kernel/ptrace.c
... ... @@ -1075,7 +1075,8 @@
1075 1075 }
1076 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 1081 int ret;
1081 1082  
arch/avr32/kernel/ptrace.c
... ... @@ -146,7 +146,8 @@
146 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 152 int ret;
152 153  
arch/blackfin/kernel/ptrace.c
... ... @@ -240,7 +240,8 @@
240 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 246 int ret;
246 247 unsigned long __user *datap = (unsigned long __user *)data;
arch/cris/arch-v10/kernel/ptrace.c
... ... @@ -76,7 +76,8 @@
76 76 * (in user space) where the result of the ptrace call is written (instead of
77 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 82 int ret;
82 83 unsigned long __user *datap = (unsigned long __user *)data;
... ... @@ -141,7 +142,7 @@
141 142 break;
142 143 }
143 144  
144   - data += sizeof(long);
  145 + data += sizeof(unsigned long);
145 146 }
146 147  
147 148 break;
... ... @@ -165,7 +166,7 @@
165 166 }
166 167  
167 168 put_reg(child, i, tmp);
168   - data += sizeof(long);
  169 + data += sizeof(unsigned long);
169 170 }
170 171  
171 172 break;
arch/cris/arch-v32/kernel/ptrace.c
... ... @@ -126,7 +126,8 @@
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 132 int ret;
132 133 unsigned long __user *datap = (unsigned long __user *)data;
arch/frv/kernel/ptrace.c
... ... @@ -254,7 +254,8 @@
254 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 260 unsigned long tmp;
260 261 int ret;
arch/h8300/kernel/ptrace.c
... ... @@ -50,7 +50,8 @@
50 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 56 int ret;
56 57  
... ... @@ -120,7 +121,7 @@
120 121 ret = -EFAULT;
121 122 break;
122 123 }
123   - data += sizeof(long);
  124 + data += sizeof(unsigned long);
124 125 }
125 126 ret = 0;
126 127 break;
... ... @@ -135,7 +136,7 @@
135 136 break;
136 137 }
137 138 h8300_put_reg(child, i, tmp);
138   - data += sizeof(long);
  139 + data += sizeof(unsigned long);
139 140 }
140 141 ret = 0;
141 142 break;
arch/ia64/kernel/ptrace.c
... ... @@ -1177,7 +1177,8 @@
1177 1177 }
1178 1178  
1179 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 1183 switch (request) {
1183 1184 case PTRACE_PEEKTEXT:
arch/m32r/kernel/ptrace.c
... ... @@ -622,7 +622,8 @@
622 622 }
623 623  
624 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 628 int ret;
628 629  
arch/m68k/kernel/ptrace.c
... ... @@ -156,7 +156,8 @@
156 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 162 unsigned long tmp;
162 163 int i, ret = 0;
... ... @@ -200,7 +201,7 @@
200 201 * into internal fpu reg representation
201 202 */
202 203 if (FPU_IS_EMU && (addr < 45) && !(addr % 3)) {
203   - data = (unsigned long)data << 15;
  204 + data <<= 15;
204 205 data = (data & 0xffff0000) |
205 206 ((data & 0x0000ffff) >> 1);
206 207 }
... ... @@ -215,7 +216,7 @@
215 216 ret = put_user(tmp, (unsigned long *)data);
216 217 if (ret)
217 218 break;
218   - data += sizeof(long);
  219 + data += sizeof(unsigned long);
219 220 }
220 221 break;
221 222  
... ... @@ -229,7 +230,7 @@
229 230 tmp |= get_reg(child, PT_SR) & ~SR_MASK;
230 231 }
231 232 put_reg(child, i, tmp);
232   - data += sizeof(long);
  233 + data += sizeof(unsigned long);
233 234 }
234 235 break;
235 236  
arch/m68knommu/kernel/ptrace.c
... ... @@ -112,7 +112,8 @@
112 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 118 int ret;
118 119  
... ... @@ -184,7 +185,7 @@
184 185 ret = -EFAULT;
185 186 break;
186 187 }
187   - data += sizeof(long);
  188 + data += sizeof(unsigned long);
188 189 }
189 190 ret = 0;
190 191 break;
... ... @@ -204,7 +205,7 @@
204 205 tmp |= get_reg(child, PT_SR) & ~(SR_MASK << 16);
205 206 }
206 207 put_reg(child, i, tmp);
207   - data += sizeof(long);
  208 + data += sizeof(unsigned long);
208 209 }
209 210 ret = 0;
210 211 break;
arch/microblaze/kernel/ptrace.c
... ... @@ -73,7 +73,8 @@
73 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 79 int rval;
79 80 unsigned long val = 0;
arch/mips/kernel/ptrace.c
... ... @@ -255,7 +255,8 @@
255 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 261 int ret;
261 262  
arch/mn10300/kernel/ptrace.c
... ... @@ -295,7 +295,8 @@
295 295 /*
296 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 301 unsigned long tmp;
301 302 int ret;
arch/parisc/kernel/ptrace.c
... ... @@ -110,7 +110,8 @@
110 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 116 unsigned long tmp;
116 117 long ret = -EIO;
... ... @@ -120,8 +121,8 @@
120 121 /* Read the word at location addr in the USER area. For ptraced
121 122 processes, the kernel saves all regs on a syscall. */
122 123 case PTRACE_PEEKUSR:
123   - if ((addr & (sizeof(long)-1)) ||
124   - (unsigned long) addr >= sizeof(struct pt_regs))
  124 + if ((addr & (sizeof(unsigned long)-1)) ||
  125 + addr >= sizeof(struct pt_regs))
125 126 break;
126 127 tmp = *(unsigned long *) ((char *) task_regs(child) + addr);
127 128 ret = put_user(tmp, (unsigned long *) data);
... ... @@ -151,8 +152,8 @@
151 152 break;
152 153 }
153 154  
154   - if ((addr & (sizeof(long)-1)) ||
155   - (unsigned long) addr >= sizeof(struct pt_regs))
  155 + if ((addr & (sizeof(unsigned long)-1)) ||
  156 + addr >= sizeof(struct pt_regs))
156 157 break;
157 158 if ((addr >= PT_GR1 && addr <= PT_GR31) ||
158 159 addr == PT_IAOQ0 || addr == PT_IAOQ1 ||
arch/powerpc/kernel/ptrace.c
... ... @@ -1406,8 +1406,8 @@
1406 1406 * Here are the old "legacy" powerpc specific getregs/setregs ptrace calls,
1407 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,
1410   - long data)
  1409 +static long arch_ptrace_old(struct task_struct *child, long request,
  1410 + unsigned long addr, unsigned long data)
1411 1411 {
1412 1412 switch (request) {
1413 1413 case PPC_PTRACE_GETREGS: /* Get GPRs 0 - 31. */
... ... @@ -1434,7 +1434,8 @@
1434 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 1440 int ret = -EPERM;
1440 1441  
1441 1442  
... ... @@ -1446,11 +1447,11 @@
1446 1447 ret = -EIO;
1447 1448 /* convert to index and check */
1448 1449 #ifdef CONFIG_PPC32
1449   - index = (unsigned long) addr >> 2;
  1450 + index = addr >> 2;
1450 1451 if ((addr & 3) || (index > PT_FPSCR)
1451 1452 || (child->thread.regs == NULL))
1452 1453 #else
1453   - index = (unsigned long) addr >> 3;
  1454 + index = addr >> 3;
1454 1455 if ((addr & 7) || (index > PT_FPSCR))
1455 1456 #endif
1456 1457 break;
1457 1458  
... ... @@ -1474,11 +1475,11 @@
1474 1475 ret = -EIO;
1475 1476 /* convert to index and check */
1476 1477 #ifdef CONFIG_PPC32
1477   - index = (unsigned long) addr >> 2;
  1478 + index = addr >> 2;
1478 1479 if ((addr & 3) || (index > PT_FPSCR)
1479 1480 || (child->thread.regs == NULL))
1480 1481 #else
1481   - index = (unsigned long) addr >> 3;
  1482 + index = addr >> 3;
1482 1483 if ((addr & 7) || (index > PT_FPSCR))
1483 1484 #endif
1484 1485 break;
arch/s390/kernel/ptrace.c
... ... @@ -343,7 +343,8 @@
343 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 349 ptrace_area parea;
349 350 int copied, ret;
arch/score/kernel/ptrace.c
... ... @@ -325,7 +325,8 @@
325 325 }
326 326  
327 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 331 int ret;
331 332 unsigned long __user *datap = (void __user *)data;
arch/sh/kernel/ptrace_32.c
... ... @@ -365,7 +365,8 @@
365 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 371 struct user * dummy = NULL;
371 372 unsigned long __user *datap = (unsigned long __user *)data;
372 373  
373 374  
374 375  
... ... @@ -383,17 +384,17 @@
383 384  
384 385 if (addr < sizeof(struct pt_regs))
385 386 tmp = get_stack_long(child, addr);
386   - else if (addr >= (long) &dummy->fpu &&
387   - addr < (long) &dummy->u_fpvalid) {
  387 + else if (addr >= (unsigned long) &dummy->fpu &&
  388 + addr < (unsigned long) &dummy->u_fpvalid) {
388 389 if (!tsk_used_math(child)) {
389   - if (addr == (long)&dummy->fpu.fpscr)
  390 + if (addr == (unsigned long)&dummy->fpu.fpscr)
390 391 tmp = FPSCR_INIT;
391 392 else
392 393 tmp = 0;
393 394 } else
394   - tmp = ((long *)child->thread.xstate)
  395 + tmp = ((unsigned long *)child->thread.xstate)
395 396 [(addr - (long)&dummy->fpu) >> 2];
396   - } else if (addr == (long) &dummy->u_fpvalid)
  397 + } else if (addr == (unsigned long) &dummy->u_fpvalid)
397 398 tmp = !!tsk_used_math(child);
398 399 else if (addr == PT_TEXT_ADDR)
399 400 tmp = child->mm->start_code;
400 401  
401 402  
... ... @@ -417,13 +418,13 @@
417 418  
418 419 if (addr < sizeof(struct pt_regs))
419 420 ret = put_stack_long(child, addr, data);
420   - else if (addr >= (long) &dummy->fpu &&
421   - addr < (long) &dummy->u_fpvalid) {
  421 + else if (addr >= (unsigned long) &dummy->fpu &&
  422 + addr < (unsigned long) &dummy->u_fpvalid) {
422 423 set_stopped_child_used_math(child);
423   - ((long *)child->thread.xstate)
  424 + ((unsigned long *)child->thread.xstate)
424 425 [(addr - (long)&dummy->fpu) >> 2] = data;
425 426 ret = 0;
426   - } else if (addr == (long) &dummy->u_fpvalid) {
  427 + } else if (addr == (unsigned long) &dummy->u_fpvalid) {
427 428 conditional_stopped_child_used_math(data, child);
428 429 ret = 0;
429 430 }
arch/sh/kernel/ptrace_64.c
... ... @@ -383,7 +383,8 @@
383 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 389 int ret;
389 390  
... ... @@ -471,7 +472,8 @@
471 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 478 #define WPC_DBRMODE 0x0d104008
477 479 static unsigned long first_call;
arch/sparc/kernel/ptrace_32.c
... ... @@ -323,7 +323,8 @@
323 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 329 unsigned long addr2 = current->thread.kregs->u_regs[UREG_I4];
329 330 const struct user_regset_view *view;
arch/sparc/kernel/ptrace_64.c
... ... @@ -969,7 +969,8 @@
969 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 975 const struct user_regset_view *view = task_user_regset_view(current);
975 976 unsigned long addr2 = task_pt_regs(current)->u_regs[UREG_I4];
... ... @@ -977,8 +978,8 @@
977 978 struct fps __user *fps;
978 979 int ret;
979 980  
980   - pregs = (struct pt_regs __user *) (unsigned long) addr;
981   - fps = (struct fps __user *) (unsigned long) addr;
  981 + pregs = (struct pt_regs __user *) addr;
  982 + fps = (struct fps __user *) addr;
982 983  
983 984 switch (request) {
984 985 case PTRACE_PEEKUSR:
arch/tile/kernel/ptrace.c
... ... @@ -45,7 +45,8 @@
45 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 51 unsigned long __user *datap = (long __user __force *)data;
51 52 unsigned long tmp;
... ... @@ -98,7 +99,8 @@
98 99 if (!access_ok(VERIFY_WRITE, datap, PTREGS_SIZE))
99 100 break;
100 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 104 ret = __put_user(childregs[i], &datap[i]);
103 105 if (ret != 0)
104 106 break;
... ... @@ -109,7 +111,8 @@
109 111 if (!access_ok(VERIFY_READ, datap, PTREGS_SIZE))
110 112 break;
111 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 116 ret = __get_user(childregs[i], &datap[i]);
114 117 if (ret != 0)
115 118 break;
arch/um/kernel/ptrace.c
... ... @@ -42,10 +42,11 @@
42 42 extern int peek_user(struct task_struct * child, long addr, long data);
43 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 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 51 switch (request) {
51 52 /* read word at location addr. */
arch/um/sys-i386/ptrace.c
... ... @@ -203,8 +203,8 @@
203 203 (unsigned long *) &fpregs);
204 204 }
205 205  
206   -long subarch_ptrace(struct task_struct *child, long request, long addr,
207   - long data)
  206 +long subarch_ptrace(struct task_struct *child, long request,
  207 + unsigned long addr, unsigned long data)
208 208 {
209 209 return -EIO;
210 210 }
arch/um/sys-x86_64/ptrace.c
... ... @@ -175,8 +175,8 @@
175 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,
179   - long data)
  178 +long subarch_ptrace(struct task_struct *child, long request,
  179 + unsigned long addr, unsigned long data)
180 180 {
181 181 int ret = -EIO;
182 182  
arch/x86/kernel/ptrace.c
... ... @@ -801,7 +801,8 @@
801 801 static const struct user_regset_view user_x86_32_view; /* Initialized below. */
802 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 807 int ret;
807 808 unsigned long __user *datap = (unsigned long __user *)data;
808 809  
... ... @@ -888,14 +889,14 @@
888 889  
889 890 #if defined CONFIG_X86_32 || defined CONFIG_IA32_EMULATION
890 891 case PTRACE_GET_THREAD_AREA:
891   - if (addr < 0)
  892 + if ((int) addr < 0)
892 893 return -EIO;
893 894 ret = do_get_thread_area(child, addr,
894 895 (struct user_desc __user *) data);
895 896 break;
896 897  
897 898 case PTRACE_SET_THREAD_AREA:
898   - if (addr < 0)
  899 + if ((int) addr < 0)
899 900 return -EIO;
900 901 ret = do_set_thread_area(child, addr,
901 902 (struct user_desc __user *) data, 0);
arch/xtensa/kernel/ptrace.c
... ... @@ -256,7 +256,8 @@
256 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 262 int ret = -EPERM;
262 263  
include/linux/ptrace.h
... ... @@ -100,7 +100,8 @@
100 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 105 extern int ptrace_traceme(void);
105 106 extern int ptrace_readdata(struct task_struct *tsk, unsigned long src, char __user *dst, int len);
106 107 extern int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long dst, int len);