Loading arch/m32r/kernel/signal.c +7 −10 Original line number Original line Diff line number Diff line Loading @@ -36,7 +36,7 @@ sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize, unsigned long r2, unsigned long r3, unsigned long r4, unsigned long r2, unsigned long r3, unsigned long r4, unsigned long r5, unsigned long r6, struct pt_regs *regs) unsigned long r5, unsigned long r6, struct pt_regs *regs) { { sigset_t saveset, newset; sigset_t newset; /* XXX: Don't preclude handling different sized sigset_t's. */ /* XXX: Don't preclude handling different sized sigset_t's. */ if (sigsetsize != sizeof(sigset_t)) if (sigsetsize != sizeof(sigset_t)) Loading @@ -44,21 +44,18 @@ sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize, if (copy_from_user(&newset, unewset, sizeof(newset))) if (copy_from_user(&newset, unewset, sizeof(newset))) return -EFAULT; return -EFAULT; sigdelsetmask(&newset, ~_BLOCKABLE); sigdelsetmask(&newset, sigmask(SIGKILL)|sigmask(SIGSTOP)); spin_lock_irq(¤t->sighand->siglock); spin_lock_irq(¤t->sighand->siglock); saveset = current->blocked; current->saved_sigmask = current->blocked; current->blocked = newset; current->blocked = newset; recalc_sigpending(); recalc_sigpending(); spin_unlock_irq(¤t->sighand->siglock); spin_unlock_irq(¤t->sighand->siglock); regs->r0 = -EINTR; while (1) { current->state = TASK_INTERRUPTIBLE; current->state = TASK_INTERRUPTIBLE; schedule(); schedule(); if (do_signal(regs, &saveset)) set_thread_flag(TIF_RESTORE_SIGMASK); return regs->r0; return -ERESTARTNOHAND; } } } asmlinkage int asmlinkage int Loading arch/m32r/kernel/syscall_table.S +40 −0 Original line number Original line Diff line number Diff line Loading @@ -284,3 +284,43 @@ ENTRY(sys_call_table) .long sys_mq_getsetattr .long sys_mq_getsetattr .long sys_ni_syscall /* reserved for kexec */ .long sys_ni_syscall /* reserved for kexec */ .long sys_waitid .long sys_waitid .long sys_ni_syscall /* 285 */ /* available */ .long sys_add_key .long sys_request_key .long sys_keyctl .long sys_ioprio_set .long sys_ioprio_get /* 290 */ .long sys_inotify_init .long sys_inotify_add_watch .long sys_inotify_rm_watch .long sys_migrate_pages .long sys_openat /* 295 */ .long sys_mkdirat .long sys_mknodat .long sys_fchownat .long sys_futimesat .long sys_fstatat64 /* 300 */ .long sys_unlinkat .long sys_renameat .long sys_linkat .long sys_symlinkat .long sys_readlinkat /* 305 */ .long sys_fchmodat .long sys_faccessat .long sys_pselect6 .long sys_ppoll .long sys_unshare /* 310 */ .long sys_set_robust_list .long sys_get_robust_list .long sys_splice .long sys_sync_file_range .long sys_tee /* 315 */ .long sys_vmsplice .long sys_move_pages .long sys_getcpu .long sys_epoll_pwait .long sys_utimensat /* 320 */ .long sys_signalfd .long sys_timerfd .long sys_eventfd .long sys_fallocate include/asm-m32r/thread_info.h +8 −3 Original line number Original line Diff line number Diff line Loading @@ -149,16 +149,21 @@ static inline unsigned int get_thread_fault_code(void) #define TIF_NEED_RESCHED 2 /* rescheduling necessary */ #define TIF_NEED_RESCHED 2 /* rescheduling necessary */ #define TIF_SINGLESTEP 3 /* restore singlestep on return to user mode */ #define TIF_SINGLESTEP 3 /* restore singlestep on return to user mode */ #define TIF_IRET 4 /* return with iret */ #define TIF_IRET 4 /* return with iret */ #define TIF_POLLING_NRFLAG 16 /* true if poll_idle() is polling TIF_NEED_RESCHED */ #define TIF_RESTORE_SIGMASK 8 /* restore signal mask in do_signal() */ /* 31..28 fault code */ #define TIF_USEDFPU 16 /* FPU was used by this task this quantum (SMP) */ #define TIF_MEMDIE 17 #define TIF_POLLING_NRFLAG 17 /* true if poll_idle() is polling TIF_NEED_RESCHED */ #define TIF_MEMDIE 18 /* OOM killer killed process */ #define TIF_FREEZE 19 /* is freezing for suspend */ #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) #define _TIF_SIGPENDING (1<<TIF_SIGPENDING) #define _TIF_SIGPENDING (1<<TIF_SIGPENDING) #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) #define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP) #define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP) #define _TIF_IRET (1<<TIF_IRET) #define _TIF_IRET (1<<TIF_IRET) #define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) #define _TIF_USEDFPU (1<<TIF_USEDFPU) #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) #define _TIF_FREEZE (1<<TIF_FREEZE) #define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */ #define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */ #define _TIF_ALLWORK_MASK 0x0000FFFF /* work to do on any return to u-space */ #define _TIF_ALLWORK_MASK 0x0000FFFF /* work to do on any return to u-space */ Loading include/asm-m32r/unistd.h +65 −1 Original line number Original line Diff line number Diff line Loading @@ -290,10 +290,50 @@ #define __NR_mq_getsetattr (__NR_mq_open+5) #define __NR_mq_getsetattr (__NR_mq_open+5) #define __NR_kexec_load 283 #define __NR_kexec_load 283 #define __NR_waitid 284 #define __NR_waitid 284 /* 285 is unused */ #define __NR_add_key 286 #define __NR_request_key 287 #define __NR_keyctl 288 #define __NR_ioprio_set 289 #define __NR_ioprio_get 290 #define __NR_inotify_init 291 #define __NR_inotify_add_watch 292 #define __NR_inotify_rm_watch 293 #define __NR_migrate_pages 294 #define __NR_openat 295 #define __NR_mkdirat 296 #define __NR_mknodat 297 #define __NR_fchownat 298 #define __NR_futimesat 299 #define __NR_fstatat64 300 #define __NR_unlinkat 301 #define __NR_renameat 302 #define __NR_linkat 303 #define __NR_symlinkat 304 #define __NR_readlinkat 305 #define __NR_fchmodat 306 #define __NR_faccessat 307 #define __NR_pselect6 308 #define __NR_ppoll 309 #define __NR_unshare 310 #define __NR_set_robust_list 311 #define __NR_get_robust_list 312 #define __NR_splice 313 #define __NR_sync_file_range 314 #define __NR_tee 315 #define __NR_vmsplice 316 #define __NR_move_pages 317 #define __NR_getcpu 318 #define __NR_epoll_pwait 319 #define __NR_utimensat 320 #define __NR_signalfd 321 #define __NR_timerfd 322 #define __NR_eventfd 323 #define __NR_fallocate 324 #ifdef __KERNEL__ #ifdef __KERNEL__ #define NR_syscalls 285 #define NR_syscalls 325 #define __ARCH_WANT_IPC_PARSE_VERSION #define __ARCH_WANT_IPC_PARSE_VERSION #define __ARCH_WANT_STAT64 #define __ARCH_WANT_STAT64 Loading @@ -311,6 +351,30 @@ #define __ARCH_WANT_SYS_OLDUMOUNT #define __ARCH_WANT_SYS_OLDUMOUNT #define __ARCH_WANT_SYS_RT_SIGACTION #define __ARCH_WANT_SYS_RT_SIGACTION #define __IGNORE_lchown #define __IGNORE_setuid #define __IGNORE_getuid #define __IGNORE_setgid #define __IGNORE_getgid #define __IGNORE_geteuid #define __IGNORE_getegid #define __IGNORE_fcntl #define __IGNORE_setreuid #define __IGNORE_setregid #define __IGNORE_getrlimit #define __IGNORE_getgroups #define __IGNORE_setgroups #define __IGNORE_select #define __IGNORE_mmap #define __IGNORE_fchown #define __IGNORE_setfsuid #define __IGNORE_setfsgid #define __IGNORE_setresuid #define __IGNORE_getresuid #define __IGNORE_setresgid #define __IGNORE_getresgid #define __IGNORE_chown /* /* * "Conditional" syscalls * "Conditional" syscalls * * Loading Loading
arch/m32r/kernel/signal.c +7 −10 Original line number Original line Diff line number Diff line Loading @@ -36,7 +36,7 @@ sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize, unsigned long r2, unsigned long r3, unsigned long r4, unsigned long r2, unsigned long r3, unsigned long r4, unsigned long r5, unsigned long r6, struct pt_regs *regs) unsigned long r5, unsigned long r6, struct pt_regs *regs) { { sigset_t saveset, newset; sigset_t newset; /* XXX: Don't preclude handling different sized sigset_t's. */ /* XXX: Don't preclude handling different sized sigset_t's. */ if (sigsetsize != sizeof(sigset_t)) if (sigsetsize != sizeof(sigset_t)) Loading @@ -44,21 +44,18 @@ sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize, if (copy_from_user(&newset, unewset, sizeof(newset))) if (copy_from_user(&newset, unewset, sizeof(newset))) return -EFAULT; return -EFAULT; sigdelsetmask(&newset, ~_BLOCKABLE); sigdelsetmask(&newset, sigmask(SIGKILL)|sigmask(SIGSTOP)); spin_lock_irq(¤t->sighand->siglock); spin_lock_irq(¤t->sighand->siglock); saveset = current->blocked; current->saved_sigmask = current->blocked; current->blocked = newset; current->blocked = newset; recalc_sigpending(); recalc_sigpending(); spin_unlock_irq(¤t->sighand->siglock); spin_unlock_irq(¤t->sighand->siglock); regs->r0 = -EINTR; while (1) { current->state = TASK_INTERRUPTIBLE; current->state = TASK_INTERRUPTIBLE; schedule(); schedule(); if (do_signal(regs, &saveset)) set_thread_flag(TIF_RESTORE_SIGMASK); return regs->r0; return -ERESTARTNOHAND; } } } asmlinkage int asmlinkage int Loading
arch/m32r/kernel/syscall_table.S +40 −0 Original line number Original line Diff line number Diff line Loading @@ -284,3 +284,43 @@ ENTRY(sys_call_table) .long sys_mq_getsetattr .long sys_mq_getsetattr .long sys_ni_syscall /* reserved for kexec */ .long sys_ni_syscall /* reserved for kexec */ .long sys_waitid .long sys_waitid .long sys_ni_syscall /* 285 */ /* available */ .long sys_add_key .long sys_request_key .long sys_keyctl .long sys_ioprio_set .long sys_ioprio_get /* 290 */ .long sys_inotify_init .long sys_inotify_add_watch .long sys_inotify_rm_watch .long sys_migrate_pages .long sys_openat /* 295 */ .long sys_mkdirat .long sys_mknodat .long sys_fchownat .long sys_futimesat .long sys_fstatat64 /* 300 */ .long sys_unlinkat .long sys_renameat .long sys_linkat .long sys_symlinkat .long sys_readlinkat /* 305 */ .long sys_fchmodat .long sys_faccessat .long sys_pselect6 .long sys_ppoll .long sys_unshare /* 310 */ .long sys_set_robust_list .long sys_get_robust_list .long sys_splice .long sys_sync_file_range .long sys_tee /* 315 */ .long sys_vmsplice .long sys_move_pages .long sys_getcpu .long sys_epoll_pwait .long sys_utimensat /* 320 */ .long sys_signalfd .long sys_timerfd .long sys_eventfd .long sys_fallocate
include/asm-m32r/thread_info.h +8 −3 Original line number Original line Diff line number Diff line Loading @@ -149,16 +149,21 @@ static inline unsigned int get_thread_fault_code(void) #define TIF_NEED_RESCHED 2 /* rescheduling necessary */ #define TIF_NEED_RESCHED 2 /* rescheduling necessary */ #define TIF_SINGLESTEP 3 /* restore singlestep on return to user mode */ #define TIF_SINGLESTEP 3 /* restore singlestep on return to user mode */ #define TIF_IRET 4 /* return with iret */ #define TIF_IRET 4 /* return with iret */ #define TIF_POLLING_NRFLAG 16 /* true if poll_idle() is polling TIF_NEED_RESCHED */ #define TIF_RESTORE_SIGMASK 8 /* restore signal mask in do_signal() */ /* 31..28 fault code */ #define TIF_USEDFPU 16 /* FPU was used by this task this quantum (SMP) */ #define TIF_MEMDIE 17 #define TIF_POLLING_NRFLAG 17 /* true if poll_idle() is polling TIF_NEED_RESCHED */ #define TIF_MEMDIE 18 /* OOM killer killed process */ #define TIF_FREEZE 19 /* is freezing for suspend */ #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) #define _TIF_SIGPENDING (1<<TIF_SIGPENDING) #define _TIF_SIGPENDING (1<<TIF_SIGPENDING) #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) #define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP) #define _TIF_SINGLESTEP (1<<TIF_SINGLESTEP) #define _TIF_IRET (1<<TIF_IRET) #define _TIF_IRET (1<<TIF_IRET) #define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) #define _TIF_USEDFPU (1<<TIF_USEDFPU) #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) #define _TIF_FREEZE (1<<TIF_FREEZE) #define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */ #define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */ #define _TIF_ALLWORK_MASK 0x0000FFFF /* work to do on any return to u-space */ #define _TIF_ALLWORK_MASK 0x0000FFFF /* work to do on any return to u-space */ Loading
include/asm-m32r/unistd.h +65 −1 Original line number Original line Diff line number Diff line Loading @@ -290,10 +290,50 @@ #define __NR_mq_getsetattr (__NR_mq_open+5) #define __NR_mq_getsetattr (__NR_mq_open+5) #define __NR_kexec_load 283 #define __NR_kexec_load 283 #define __NR_waitid 284 #define __NR_waitid 284 /* 285 is unused */ #define __NR_add_key 286 #define __NR_request_key 287 #define __NR_keyctl 288 #define __NR_ioprio_set 289 #define __NR_ioprio_get 290 #define __NR_inotify_init 291 #define __NR_inotify_add_watch 292 #define __NR_inotify_rm_watch 293 #define __NR_migrate_pages 294 #define __NR_openat 295 #define __NR_mkdirat 296 #define __NR_mknodat 297 #define __NR_fchownat 298 #define __NR_futimesat 299 #define __NR_fstatat64 300 #define __NR_unlinkat 301 #define __NR_renameat 302 #define __NR_linkat 303 #define __NR_symlinkat 304 #define __NR_readlinkat 305 #define __NR_fchmodat 306 #define __NR_faccessat 307 #define __NR_pselect6 308 #define __NR_ppoll 309 #define __NR_unshare 310 #define __NR_set_robust_list 311 #define __NR_get_robust_list 312 #define __NR_splice 313 #define __NR_sync_file_range 314 #define __NR_tee 315 #define __NR_vmsplice 316 #define __NR_move_pages 317 #define __NR_getcpu 318 #define __NR_epoll_pwait 319 #define __NR_utimensat 320 #define __NR_signalfd 321 #define __NR_timerfd 322 #define __NR_eventfd 323 #define __NR_fallocate 324 #ifdef __KERNEL__ #ifdef __KERNEL__ #define NR_syscalls 285 #define NR_syscalls 325 #define __ARCH_WANT_IPC_PARSE_VERSION #define __ARCH_WANT_IPC_PARSE_VERSION #define __ARCH_WANT_STAT64 #define __ARCH_WANT_STAT64 Loading @@ -311,6 +351,30 @@ #define __ARCH_WANT_SYS_OLDUMOUNT #define __ARCH_WANT_SYS_OLDUMOUNT #define __ARCH_WANT_SYS_RT_SIGACTION #define __ARCH_WANT_SYS_RT_SIGACTION #define __IGNORE_lchown #define __IGNORE_setuid #define __IGNORE_getuid #define __IGNORE_setgid #define __IGNORE_getgid #define __IGNORE_geteuid #define __IGNORE_getegid #define __IGNORE_fcntl #define __IGNORE_setreuid #define __IGNORE_setregid #define __IGNORE_getrlimit #define __IGNORE_getgroups #define __IGNORE_setgroups #define __IGNORE_select #define __IGNORE_mmap #define __IGNORE_fchown #define __IGNORE_setfsuid #define __IGNORE_setfsgid #define __IGNORE_setresuid #define __IGNORE_getresuid #define __IGNORE_setresgid #define __IGNORE_getresgid #define __IGNORE_chown /* /* * "Conditional" syscalls * "Conditional" syscalls * * Loading