diff options
| author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-09-20 17:15:21 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-09-20 17:15:21 -0700 |
| commit | 3e5ef0c6d466d994b662cbd5fb7444fb949b460b (patch) | |
| tree | 42e62207bdeb272c2386280e49a6e20765aa95ee | |
| parent | befb173bdb23432483d90e58cc93ab77ab9e2b1d (diff) | |
| parent | 3b59e61496f04539a50c83b6dc98e8c498aa033f (diff) | |
Merge bk://are.twiddle.net/axp-2.6/
into ppc970.osdl.org:/home/torvalds/v2.6/linux
| -rw-r--r-- | arch/alpha/kernel/osf_sys.c | 8 | ||||
| -rw-r--r-- | arch/alpha/kernel/ptrace.c | 19 | ||||
| -rw-r--r-- | arch/alpha/kernel/signal.c | 6 | ||||
| -rw-r--r-- | arch/alpha/kernel/srmcons.c | 12 | ||||
| -rw-r--r-- | include/asm-alpha/tlbflush.h | 2 | ||||
| -rw-r--r-- | include/asm-alpha/unistd.h | 2 | ||||
| -rw-r--r-- | include/linux/syscalls.h | 4 | ||||
| -rw-r--r-- | kernel/exit.c | 6 |
8 files changed, 33 insertions, 26 deletions
diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c index 6de06dda20a7..66d4d081df86 100644 --- a/arch/alpha/kernel/osf_sys.c +++ b/arch/alpha/kernel/osf_sys.c @@ -91,8 +91,8 @@ osf_set_program_attributes(unsigned long text_start, unsigned long text_len, * braindamage (it can't really handle filesystems where the directory * offset differences aren't the same as "d_reclen"). */ -#define NAME_OFFSET(de) ((int) ((de)->d_name - (char __user *) (de))) -#define ROUND_UP(x) (((x)+3) & ~3) +#define NAME_OFFSET offsetof (struct osf_dirent, d_name) +#define ROUND_UP(x) (((x)+3) & ~3) struct osf_dirent { unsigned int d_ino; @@ -114,7 +114,7 @@ osf_filldir(void *__buf, const char *name, int namlen, loff_t offset, { struct osf_dirent __user *dirent; struct osf_dirent_callback *buf = (struct osf_dirent_callback *) __buf; - unsigned int reclen = ROUND_UP(NAME_OFFSET(dirent) + namlen + 1); + unsigned int reclen = ROUND_UP(NAME_OFFSET + namlen + 1); buf->error = -EINVAL; /* only used if we fail */ if (reclen > buf->count) @@ -989,7 +989,7 @@ osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp, fd_set_bits fds; char *bits; size_t size; - unsigned long timeout; + long timeout; int ret; timeout = MAX_SCHEDULE_TIMEOUT; diff --git a/arch/alpha/kernel/ptrace.c b/arch/alpha/kernel/ptrace.c index aa654cc85369..9c21fbd4f34f 100644 --- a/arch/alpha/kernel/ptrace.c +++ b/arch/alpha/kernel/ptrace.c @@ -91,15 +91,15 @@ static int regoff[] = { PT_REG( pc) }; -static long zero; +static unsigned long zero; /* * Get address of register REGNO in task TASK. */ -static long * +static unsigned long * get_reg_addr(struct task_struct * task, unsigned long regno) { - long *addr; + unsigned long *addr; if (regno == 30) { addr = &task->thread_info->pcb.usp; @@ -109,7 +109,7 @@ get_reg_addr(struct task_struct * task, unsigned long regno) zero = 0; addr = &zero; } else { - addr = (long *)((long)task->thread_info + regoff[regno]); + addr = (void *)task->thread_info + regoff[regno]; } return addr; } @@ -117,7 +117,7 @@ get_reg_addr(struct task_struct * task, unsigned long regno) /* * Get contents of register REGNO in task TASK. */ -static long +static unsigned long get_reg(struct task_struct * task, unsigned long regno) { /* Special hack for fpcr -- combine hardware and software bits. */ @@ -135,7 +135,7 @@ get_reg(struct task_struct * task, unsigned long regno) * Write contents of register REGNO in task TASK. */ static int -put_reg(struct task_struct *task, unsigned long regno, long data) +put_reg(struct task_struct *task, unsigned long regno, unsigned long data) { if (regno == 63) { task->thread_info->ieee_state @@ -168,11 +168,11 @@ int ptrace_set_bpt(struct task_struct * child) { int displ, i, res, reg_b, nsaved = 0; - u32 insn, op_code; + unsigned int insn, op_code; unsigned long pc; pc = get_reg(child, REG_PC); - res = read_int(child, pc, &insn); + res = read_int(child, pc, (int *) &insn); if (res < 0) return res; @@ -203,7 +203,8 @@ ptrace_set_bpt(struct task_struct * child) /* install breakpoints: */ for (i = 0; i < nsaved; ++i) { - res = read_int(child, child->thread_info->bpt_addr[i], &insn); + res = read_int(child, child->thread_info->bpt_addr[i], + (int *) &insn); if (res < 0) return res; child->thread_info->bpt_insn[i] = insn; diff --git a/arch/alpha/kernel/signal.c b/arch/alpha/kernel/signal.c index 202714c53b6e..94ff1b330ce4 100644 --- a/arch/alpha/kernel/signal.c +++ b/arch/alpha/kernel/signal.c @@ -228,6 +228,12 @@ struct rt_sigframe unsigned int retcode[3]; }; +/* If this changes, userland unwinders that Know Things about our signal + frame will break. Do not undertake lightly. It also implies an ABI + change wrt the size of siginfo_t, which may cause some pain. */ +extern char compile_time_assert + [offsetof(struct rt_sigframe, uc.uc_mcontext) == 176 ? 1 : -1]; + #define INSN_MOV_R30_R16 0x47fe0410 #define INSN_LDI_R0 0x201f0000 #define INSN_CALLSYS 0x00000083 diff --git a/arch/alpha/kernel/srmcons.c b/arch/alpha/kernel/srmcons.c index 1a9b4c645935..48f408a3bb10 100644 --- a/arch/alpha/kernel/srmcons.c +++ b/arch/alpha/kernel/srmcons.c @@ -91,15 +91,15 @@ srmcons_receive_chars(unsigned long data) /* called with callback_lock held */ static int -srmcons_do_write(struct tty_struct *tty, const unsigned char *buf, int count) +srmcons_do_write(struct tty_struct *tty, const char *buf, int count) { - unsigned char *str_cr = "\r"; + static char str_cr[1] = "\r"; long c, remaining = count; srmcons_result result; - unsigned char *cur; + char *cur; int need_cr; - for (cur = (unsigned char *)buf; remaining > 0; ) { + for (cur = (char *)buf; remaining > 0; ) { need_cr = 0; /* * Break it up into reasonable size chunks to allow a chance @@ -138,7 +138,7 @@ srmcons_write(struct tty_struct *tty, int from_user, unsigned long flags; if (from_user) { - unsigned char tmp[512]; + char tmp[512]; int ret = 0; size_t c; @@ -167,7 +167,7 @@ srmcons_write(struct tty_struct *tty, int from_user, } spin_lock_irqsave(&srmcons_callback_lock, flags); - srmcons_do_write(tty, buf, count); + srmcons_do_write(tty, (const char *) buf, count); spin_unlock_irqrestore(&srmcons_callback_lock, flags); return count; diff --git a/include/asm-alpha/tlbflush.h b/include/asm-alpha/tlbflush.h index 736a4f61d486..ba6beac99509 100644 --- a/include/asm-alpha/tlbflush.h +++ b/include/asm-alpha/tlbflush.h @@ -86,7 +86,7 @@ flush_tlb(void) static inline void flush_tlb_other(struct mm_struct *mm) { - long *mmc = &mm->context[smp_processor_id()]; + unsigned long *mmc = &mm->context[smp_processor_id()]; /* Check it's not zero first to avoid cacheline ping pong when possible. */ if (*mmc) *mmc = 0; diff --git a/include/asm-alpha/unistd.h b/include/asm-alpha/unistd.h index 20339109180f..947e5a40e971 100644 --- a/include/asm-alpha/unistd.h +++ b/include/asm-alpha/unistd.h @@ -618,7 +618,7 @@ static inline long read(int fd, char * buf, size_t nr) return sys_read(fd, buf, nr); } -extern long execve(char *, char **, char **); +extern int execve(char *, char **, char **); static inline long setsid(void) { diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 5ff82aafa59e..a102bb035bf3 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h @@ -160,11 +160,11 @@ asmlinkage long sys_kexec_load(void *entry, unsigned long nr_segments, asmlinkage long sys_exit(int error_code); asmlinkage void sys_exit_group(int error_code); -asmlinkage long sys_wait4(pid_t pid, unsigned int __user *stat_addr, +asmlinkage long sys_wait4(pid_t pid, int __user *stat_addr, int options, struct rusage __user *ru); asmlinkage long sys_waitid(int which, pid_t pid, struct siginfo __user *infop, int options); -asmlinkage long sys_waitpid(pid_t pid, unsigned int __user *stat_addr, int options); +asmlinkage long sys_waitpid(pid_t pid, int __user *stat_addr, int options); asmlinkage long sys_set_tid_address(int __user *tidptr); asmlinkage long sys_futex(u32 __user *uaddr, int op, int val, struct timespec __user *utime, u32 __user *uaddr2, diff --git a/kernel/exit.c b/kernel/exit.c index 258964cbdbbd..6860b509dd11 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -1401,8 +1401,8 @@ asmlinkage long sys_waitid(int which, pid_t pid, return do_wait(pid, options, infop, NULL, ru); } -asmlinkage long sys_wait4(pid_t pid, unsigned int __user *stat_addr, - int options, struct rusage __user *ru) +asmlinkage long sys_wait4(pid_t pid, int __user *stat_addr, + int options, struct rusage __user *ru) { if (options & ~(WNOHANG|WUNTRACED|__WNOTHREAD|__WCLONE|__WALL)) return -EINVAL; @@ -1415,7 +1415,7 @@ asmlinkage long sys_wait4(pid_t pid, unsigned int __user *stat_addr, * sys_waitpid() remains for compatibility. waitpid() should be * implemented by calling sys_wait4() from libc.a. */ -asmlinkage long sys_waitpid(pid_t pid, unsigned __user *stat_addr, int options) +asmlinkage long sys_waitpid(pid_t pid, int __user *stat_addr, int options) { return sys_wait4(pid, stat_addr, options, NULL); } |
