aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNamhyung Kim <namhyung@gmail.com>2010-10-27 18:33:45 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-10-27 21:03:10 -0400
commit4abf986960ecda6a87fc2f795aacf888a2f0127e (patch)
tree39601ac75c3b92a3894722287bd9068a8b5e68d0
parentc4b5ed250eebf854d40f27b43362c80f115cb57a (diff)
ptrace: change signature of sys_ptrace() and friends
Since userspace API of ptrace syscall defines @addr and @data as void pointers, it would be more appropriate to define them as unsigned long in kernel. Therefore related functions are changed also. 'unsigned long' is typically used in other places in kernel as an opaque data type and that using this helps cleaning up a lot of warnings from sparse. Suggested-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Namhyung Kim <namhyung@gmail.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Roland McGrath <roland@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--include/linux/ptrace.h9
-rw-r--r--include/linux/syscalls.h3
-rw-r--r--kernel/ptrace.c16
3 files changed, 18 insertions, 10 deletions
diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h
index 4272521e29e9..67a4cd77c352 100644
--- a/include/linux/ptrace.h
+++ b/include/linux/ptrace.h
@@ -108,7 +108,8 @@ extern int ptrace_attach(struct task_struct *tsk);
108extern int ptrace_detach(struct task_struct *, unsigned int); 108extern int ptrace_detach(struct task_struct *, unsigned int);
109extern void ptrace_disable(struct task_struct *); 109extern void ptrace_disable(struct task_struct *);
110extern int ptrace_check_attach(struct task_struct *task, int kill); 110extern int ptrace_check_attach(struct task_struct *task, int kill);
111extern int ptrace_request(struct task_struct *child, long request, long addr, long data); 111extern int ptrace_request(struct task_struct *child, long request,
112 unsigned long addr, unsigned long data);
112extern void ptrace_notify(int exit_code); 113extern void ptrace_notify(int exit_code);
113extern void __ptrace_link(struct task_struct *child, 114extern void __ptrace_link(struct task_struct *child,
114 struct task_struct *new_parent); 115 struct task_struct *new_parent);
@@ -132,8 +133,10 @@ static inline void ptrace_unlink(struct task_struct *child)
132 __ptrace_unlink(child); 133 __ptrace_unlink(child);
133} 134}
134 135
135int generic_ptrace_peekdata(struct task_struct *tsk, long addr, long data); 136int generic_ptrace_peekdata(struct task_struct *tsk, unsigned long addr,
136int generic_ptrace_pokedata(struct task_struct *tsk, long addr, long data); 137 unsigned long data);
138int generic_ptrace_pokedata(struct task_struct *tsk, unsigned long addr,
139 unsigned long data);
137 140
138/** 141/**
139 * task_ptrace - return %PT_* flags that apply to a task 142 * task_ptrace - return %PT_* flags that apply to a task
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index e6319d18a55d..cacc27a0e285 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -701,7 +701,8 @@ asmlinkage long sys_nfsservctl(int cmd,
701asmlinkage long sys_syslog(int type, char __user *buf, int len); 701asmlinkage long sys_syslog(int type, char __user *buf, int len);
702asmlinkage long sys_uselib(const char __user *library); 702asmlinkage long sys_uselib(const char __user *library);
703asmlinkage long sys_ni_syscall(void); 703asmlinkage long sys_ni_syscall(void);
704asmlinkage long sys_ptrace(long request, long pid, long addr, long data); 704asmlinkage long sys_ptrace(long request, long pid, unsigned long addr,
705 unsigned long data);
705 706
706asmlinkage long sys_add_key(const char __user *_type, 707asmlinkage long sys_add_key(const char __user *_type,
707 const char __user *_description, 708 const char __user *_description,
diff --git a/kernel/ptrace.c b/kernel/ptrace.c
index 4afd9b86cc0b..06981a8b271b 100644
--- a/kernel/ptrace.c
+++ b/kernel/ptrace.c
@@ -404,7 +404,7 @@ int ptrace_writedata(struct task_struct *tsk, char __user *src, unsigned long ds
404 return copied; 404 return copied;
405} 405}
406 406
407static int ptrace_setoptions(struct task_struct *child, long data) 407static int ptrace_setoptions(struct task_struct *child, unsigned long data)
408{ 408{
409 child->ptrace &= ~PT_TRACE_MASK; 409 child->ptrace &= ~PT_TRACE_MASK;
410 410
@@ -483,7 +483,8 @@ static int ptrace_setsiginfo(struct task_struct *child, const siginfo_t *info)
483#define is_sysemu_singlestep(request) 0 483#define is_sysemu_singlestep(request) 0
484#endif 484#endif
485 485
486static int ptrace_resume(struct task_struct *child, long request, long data) 486static int ptrace_resume(struct task_struct *child, long request,
487 unsigned long data)
487{ 488{
488 if (!valid_signal(data)) 489 if (!valid_signal(data))
489 return -EIO; 490 return -EIO;
@@ -560,7 +561,7 @@ static int ptrace_regset(struct task_struct *task, int req, unsigned int type,
560#endif 561#endif
561 562
562int ptrace_request(struct task_struct *child, long request, 563int ptrace_request(struct task_struct *child, long request,
563 long addr, long data) 564 unsigned long addr, unsigned long data)
564{ 565{
565 int ret = -EIO; 566 int ret = -EIO;
566 siginfo_t siginfo; 567 siginfo_t siginfo;
@@ -693,7 +694,8 @@ static struct task_struct *ptrace_get_task_struct(pid_t pid)
693#define arch_ptrace_attach(child) do { } while (0) 694#define arch_ptrace_attach(child) do { } while (0)
694#endif 695#endif
695 696
696SYSCALL_DEFINE4(ptrace, long, request, long, pid, long, addr, long, data) 697SYSCALL_DEFINE4(ptrace, long, request, long, pid, unsigned long, addr,
698 unsigned long, data)
697{ 699{
698 struct task_struct *child; 700 struct task_struct *child;
699 long ret; 701 long ret;
@@ -734,7 +736,8 @@ SYSCALL_DEFINE4(ptrace, long, request, long, pid, long, addr, long, data)
734 return ret; 736 return ret;
735} 737}
736 738
737int generic_ptrace_peekdata(struct task_struct *tsk, long addr, long data) 739int generic_ptrace_peekdata(struct task_struct *tsk, unsigned long addr,
740 unsigned long data)
738{ 741{
739 unsigned long tmp; 742 unsigned long tmp;
740 int copied; 743 int copied;
@@ -745,7 +748,8 @@ int generic_ptrace_peekdata(struct task_struct *tsk, long addr, long data)
745 return put_user(tmp, (unsigned long __user *)data); 748 return put_user(tmp, (unsigned long __user *)data);
746} 749}
747 750
748int generic_ptrace_pokedata(struct task_struct *tsk, long addr, long data) 751int generic_ptrace_pokedata(struct task_struct *tsk, unsigned long addr,
752 unsigned long data)
749{ 753{
750 int copied; 754 int copied;
751 755