diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-27 21:54:08 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-27 21:54:08 -0500 |
commit | 5e6ddf9aaa0f2b16fc503626c70bb19832b22b8b (patch) | |
tree | 87d6b6e2d3e5a8787874aa76cefeee5c06605eb0 | |
parent | 7749c902592f610dc448830210174ab922f54be9 (diff) | |
parent | c37a33035720a0faf1f609dc7c2c07080ed83629 (diff) |
Merge branch 'for-linus' of git://www.linux-m32r.org/git/takata/linux-2.6_dev
* 'for-linus' of git://www.linux-m32r.org/git/takata/linux-2.6_dev:
m32r: Update sys_rt_sigsuspend
m32r: Ignore warnings for unused syscalls
m32r: Add missing syscalls
-rw-r--r-- | arch/m32r/kernel/signal.c | 17 | ||||
-rw-r--r-- | arch/m32r/kernel/syscall_table.S | 40 | ||||
-rw-r--r-- | include/asm-m32r/thread_info.h | 11 | ||||
-rw-r--r-- | include/asm-m32r/unistd.h | 66 |
4 files changed, 120 insertions, 14 deletions
diff --git a/arch/m32r/kernel/signal.c b/arch/m32r/kernel/signal.c index a753d79c4e8..18124542a6e 100644 --- a/arch/m32r/kernel/signal.c +++ b/arch/m32r/kernel/signal.c | |||
@@ -36,7 +36,7 @@ sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize, | |||
36 | unsigned long r2, unsigned long r3, unsigned long r4, | 36 | unsigned long r2, unsigned long r3, unsigned long r4, |
37 | unsigned long r5, unsigned long r6, struct pt_regs *regs) | 37 | unsigned long r5, unsigned long r6, struct pt_regs *regs) |
38 | { | 38 | { |
39 | sigset_t saveset, newset; | 39 | sigset_t newset; |
40 | 40 | ||
41 | /* XXX: Don't preclude handling different sized sigset_t's. */ | 41 | /* XXX: Don't preclude handling different sized sigset_t's. */ |
42 | if (sigsetsize != sizeof(sigset_t)) | 42 | if (sigsetsize != sizeof(sigset_t)) |
@@ -44,21 +44,18 @@ sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize, | |||
44 | 44 | ||
45 | if (copy_from_user(&newset, unewset, sizeof(newset))) | 45 | if (copy_from_user(&newset, unewset, sizeof(newset))) |
46 | return -EFAULT; | 46 | return -EFAULT; |
47 | sigdelsetmask(&newset, ~_BLOCKABLE); | 47 | sigdelsetmask(&newset, sigmask(SIGKILL)|sigmask(SIGSTOP)); |
48 | 48 | ||
49 | spin_lock_irq(¤t->sighand->siglock); | 49 | spin_lock_irq(¤t->sighand->siglock); |
50 | saveset = current->blocked; | 50 | current->saved_sigmask = current->blocked; |
51 | current->blocked = newset; | 51 | current->blocked = newset; |
52 | recalc_sigpending(); | 52 | recalc_sigpending(); |
53 | spin_unlock_irq(¤t->sighand->siglock); | 53 | spin_unlock_irq(¤t->sighand->siglock); |
54 | 54 | ||
55 | regs->r0 = -EINTR; | 55 | current->state = TASK_INTERRUPTIBLE; |
56 | while (1) { | 56 | schedule(); |
57 | current->state = TASK_INTERRUPTIBLE; | 57 | set_thread_flag(TIF_RESTORE_SIGMASK); |
58 | schedule(); | 58 | return -ERESTARTNOHAND; |
59 | if (do_signal(regs, &saveset)) | ||
60 | return regs->r0; | ||
61 | } | ||
62 | } | 59 | } |
63 | 60 | ||
64 | asmlinkage int | 61 | asmlinkage int |
diff --git a/arch/m32r/kernel/syscall_table.S b/arch/m32r/kernel/syscall_table.S index 751ac2a3d12..95aa7987484 100644 --- a/arch/m32r/kernel/syscall_table.S +++ b/arch/m32r/kernel/syscall_table.S | |||
@@ -284,3 +284,43 @@ ENTRY(sys_call_table) | |||
284 | .long sys_mq_getsetattr | 284 | .long sys_mq_getsetattr |
285 | .long sys_ni_syscall /* reserved for kexec */ | 285 | .long sys_ni_syscall /* reserved for kexec */ |
286 | .long sys_waitid | 286 | .long sys_waitid |
287 | .long sys_ni_syscall /* 285 */ /* available */ | ||
288 | .long sys_add_key | ||
289 | .long sys_request_key | ||
290 | .long sys_keyctl | ||
291 | .long sys_ioprio_set | ||
292 | .long sys_ioprio_get /* 290 */ | ||
293 | .long sys_inotify_init | ||
294 | .long sys_inotify_add_watch | ||
295 | .long sys_inotify_rm_watch | ||
296 | .long sys_migrate_pages | ||
297 | .long sys_openat /* 295 */ | ||
298 | .long sys_mkdirat | ||
299 | .long sys_mknodat | ||
300 | .long sys_fchownat | ||
301 | .long sys_futimesat | ||
302 | .long sys_fstatat64 /* 300 */ | ||
303 | .long sys_unlinkat | ||
304 | .long sys_renameat | ||
305 | .long sys_linkat | ||
306 | .long sys_symlinkat | ||
307 | .long sys_readlinkat /* 305 */ | ||
308 | .long sys_fchmodat | ||
309 | .long sys_faccessat | ||
310 | .long sys_pselect6 | ||
311 | .long sys_ppoll | ||
312 | .long sys_unshare /* 310 */ | ||
313 | .long sys_set_robust_list | ||
314 | .long sys_get_robust_list | ||
315 | .long sys_splice | ||
316 | .long sys_sync_file_range | ||
317 | .long sys_tee /* 315 */ | ||
318 | .long sys_vmsplice | ||
319 | .long sys_move_pages | ||
320 | .long sys_getcpu | ||
321 | .long sys_epoll_pwait | ||
322 | .long sys_utimensat /* 320 */ | ||
323 | .long sys_signalfd | ||
324 | .long sys_timerfd | ||
325 | .long sys_eventfd | ||
326 | .long sys_fallocate | ||
diff --git a/include/asm-m32r/thread_info.h b/include/asm-m32r/thread_info.h index c039820dba7..1effcd0f5e6 100644 --- a/include/asm-m32r/thread_info.h +++ b/include/asm-m32r/thread_info.h | |||
@@ -149,16 +149,21 @@ static inline unsigned int get_thread_fault_code(void) | |||
149 | #define TIF_NEED_RESCHED 2 /* rescheduling necessary */ | 149 | #define TIF_NEED_RESCHED 2 /* rescheduling necessary */ |
150 | #define TIF_SINGLESTEP 3 /* restore singlestep on return to user mode */ | 150 | #define TIF_SINGLESTEP 3 /* restore singlestep on return to user mode */ |
151 | #define TIF_IRET 4 /* return with iret */ | 151 | #define TIF_IRET 4 /* return with iret */ |
152 | #define TIF_POLLING_NRFLAG 16 /* true if poll_idle() is polling TIF_NEED_RESCHED */ | 152 | #define TIF_RESTORE_SIGMASK 8 /* restore signal mask in do_signal() */ |
153 | /* 31..28 fault code */ | 153 | #define TIF_USEDFPU 16 /* FPU was used by this task this quantum (SMP) */ |
154 | #define TIF_MEMDIE 17 | 154 | #define TIF_POLLING_NRFLAG 17 /* true if poll_idle() is polling TIF_NEED_RESCHED */ |
155 | #define TIF_MEMDIE 18 /* OOM killer killed process */ | ||
156 | #define TIF_FREEZE 19 /* is freezing for suspend */ | ||
155 | 157 | ||
156 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) | 158 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) |
157 | #define _TIF_SIGPENDING (1<<TIF_SIGPENDING) | 159 | #define _TIF_SIGPENDING (1<<TIF_SIGPENDING) |
158 | #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) | 160 | #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) |
159 | #define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP) | 161 | #define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP) |
160 | #define _TIF_IRET (1<<TIF_IRET) | 162 | #define _TIF_IRET (1<<TIF_IRET) |
163 | #define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) | ||
164 | #define _TIF_USEDFPU (1<<TIF_USEDFPU) | ||
161 | #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) | 165 | #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) |
166 | #define _TIF_FREEZE (1<<TIF_FREEZE) | ||
162 | 167 | ||
163 | #define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */ | 168 | #define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */ |
164 | #define _TIF_ALLWORK_MASK 0x0000FFFF /* work to do on any return to u-space */ | 169 | #define _TIF_ALLWORK_MASK 0x0000FFFF /* work to do on any return to u-space */ |
diff --git a/include/asm-m32r/unistd.h b/include/asm-m32r/unistd.h index cbbd53762ea..f467eac9ba7 100644 --- a/include/asm-m32r/unistd.h +++ b/include/asm-m32r/unistd.h | |||
@@ -290,10 +290,50 @@ | |||
290 | #define __NR_mq_getsetattr (__NR_mq_open+5) | 290 | #define __NR_mq_getsetattr (__NR_mq_open+5) |
291 | #define __NR_kexec_load 283 | 291 | #define __NR_kexec_load 283 |
292 | #define __NR_waitid 284 | 292 | #define __NR_waitid 284 |
293 | /* 285 is unused */ | ||
294 | #define __NR_add_key 286 | ||
295 | #define __NR_request_key 287 | ||
296 | #define __NR_keyctl 288 | ||
297 | #define __NR_ioprio_set 289 | ||
298 | #define __NR_ioprio_get 290 | ||
299 | #define __NR_inotify_init 291 | ||
300 | #define __NR_inotify_add_watch 292 | ||
301 | #define __NR_inotify_rm_watch 293 | ||
302 | #define __NR_migrate_pages 294 | ||
303 | #define __NR_openat 295 | ||
304 | #define __NR_mkdirat 296 | ||
305 | #define __NR_mknodat 297 | ||
306 | #define __NR_fchownat 298 | ||
307 | #define __NR_futimesat 299 | ||
308 | #define __NR_fstatat64 300 | ||
309 | #define __NR_unlinkat 301 | ||
310 | #define __NR_renameat 302 | ||
311 | #define __NR_linkat 303 | ||
312 | #define __NR_symlinkat 304 | ||
313 | #define __NR_readlinkat 305 | ||
314 | #define __NR_fchmodat 306 | ||
315 | #define __NR_faccessat 307 | ||
316 | #define __NR_pselect6 308 | ||
317 | #define __NR_ppoll 309 | ||
318 | #define __NR_unshare 310 | ||
319 | #define __NR_set_robust_list 311 | ||
320 | #define __NR_get_robust_list 312 | ||
321 | #define __NR_splice 313 | ||
322 | #define __NR_sync_file_range 314 | ||
323 | #define __NR_tee 315 | ||
324 | #define __NR_vmsplice 316 | ||
325 | #define __NR_move_pages 317 | ||
326 | #define __NR_getcpu 318 | ||
327 | #define __NR_epoll_pwait 319 | ||
328 | #define __NR_utimensat 320 | ||
329 | #define __NR_signalfd 321 | ||
330 | #define __NR_timerfd 322 | ||
331 | #define __NR_eventfd 323 | ||
332 | #define __NR_fallocate 324 | ||
293 | 333 | ||
294 | #ifdef __KERNEL__ | 334 | #ifdef __KERNEL__ |
295 | 335 | ||
296 | #define NR_syscalls 285 | 336 | #define NR_syscalls 325 |
297 | 337 | ||
298 | #define __ARCH_WANT_IPC_PARSE_VERSION | 338 | #define __ARCH_WANT_IPC_PARSE_VERSION |
299 | #define __ARCH_WANT_STAT64 | 339 | #define __ARCH_WANT_STAT64 |
@@ -311,6 +351,30 @@ | |||
311 | #define __ARCH_WANT_SYS_OLDUMOUNT | 351 | #define __ARCH_WANT_SYS_OLDUMOUNT |
312 | #define __ARCH_WANT_SYS_RT_SIGACTION | 352 | #define __ARCH_WANT_SYS_RT_SIGACTION |
313 | 353 | ||
354 | #define __IGNORE_lchown | ||
355 | #define __IGNORE_setuid | ||
356 | #define __IGNORE_getuid | ||
357 | #define __IGNORE_setgid | ||
358 | #define __IGNORE_getgid | ||
359 | #define __IGNORE_geteuid | ||
360 | #define __IGNORE_getegid | ||
361 | #define __IGNORE_fcntl | ||
362 | #define __IGNORE_setreuid | ||
363 | #define __IGNORE_setregid | ||
364 | #define __IGNORE_getrlimit | ||
365 | #define __IGNORE_getgroups | ||
366 | #define __IGNORE_setgroups | ||
367 | #define __IGNORE_select | ||
368 | #define __IGNORE_mmap | ||
369 | #define __IGNORE_fchown | ||
370 | #define __IGNORE_setfsuid | ||
371 | #define __IGNORE_setfsgid | ||
372 | #define __IGNORE_setresuid | ||
373 | #define __IGNORE_getresuid | ||
374 | #define __IGNORE_setresgid | ||
375 | #define __IGNORE_getresgid | ||
376 | #define __IGNORE_chown | ||
377 | |||
314 | /* | 378 | /* |
315 | * "Conditional" syscalls | 379 | * "Conditional" syscalls |
316 | * | 380 | * |