Merge branch 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6

* 'for-linus' of git://git390.osdl.marist.edu/pub/scm/linux-2.6:
[S390] Add missing compat system call wrappers.
[S390] etr/stp: fix possible deadlock
[S390] cputime: fix lowcore initialization on cpu hotplug
[S390] fix compat sigaltstack syscall table entry
[S390] personality: fix personality loss on execve

+60 -16
+8 -8
arch/s390/include/asm/elf.h
··· 172 172 #ifndef __s390x__ 173 173 #define SET_PERSONALITY(ex) set_personality(PER_LINUX) 174 174 #else /* __s390x__ */ 175 - #define SET_PERSONALITY(ex) \ 176 - do { \ 177 - if (current->personality != PER_LINUX32) \ 178 - set_personality(PER_LINUX); \ 179 - if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \ 180 - set_thread_flag(TIF_31BIT); \ 181 - else \ 182 - clear_thread_flag(TIF_31BIT); \ 175 + #define SET_PERSONALITY(ex) \ 176 + do { \ 177 + if (personality(current->personality) != PER_LINUX32) \ 178 + set_personality(PER_LINUX); \ 179 + if ((ex).e_ident[EI_CLASS] == ELFCLASS32) \ 180 + set_thread_flag(TIF_31BIT); \ 181 + else \ 182 + clear_thread_flag(TIF_31BIT); \ 183 183 } while (0) 184 184 #endif /* __s390x__ */ 185 185
+38
arch/s390/kernel/compat_wrapper.S
··· 1767 1767 sys_epoll_create1_wrapper: 1768 1768 lgfr %r2,%r2 # int 1769 1769 jg sys_epoll_create1 # branch to system call 1770 + 1771 + .globl sys32_readahead_wrapper 1772 + sys32_readahead_wrapper: 1773 + lgfr %r2,%r2 # int 1774 + llgfr %r3,%r3 # u32 1775 + llgfr %r4,%r4 # u32 1776 + lgfr %r5,%r5 # s32 1777 + jg sys32_readahead # branch to system call 1778 + 1779 + .globl sys32_sendfile64_wrapper 1780 + sys32_sendfile64_wrapper: 1781 + lgfr %r2,%r2 # int 1782 + lgfr %r3,%r3 # int 1783 + llgtr %r4,%r4 # compat_loff_t * 1784 + lgfr %r5,%r5 # s32 1785 + jg sys32_sendfile64 # branch to system call 1786 + 1787 + .globl sys_tkill_wrapper 1788 + sys_tkill_wrapper: 1789 + lgfr %r2,%r2 # pid_t 1790 + lgfr %r3,%r3 # int 1791 + jg sys_tkill # branch to system call 1792 + 1793 + .globl sys_tgkill_wrapper 1794 + sys_tgkill_wrapper: 1795 + lgfr %r2,%r2 # pid_t 1796 + lgfr %r3,%r3 # pid_t 1797 + lgfr %r4,%r4 # int 1798 + jg sys_tgkill # branch to system call 1799 + 1800 + .globl compat_sys_keyctl_wrapper 1801 + compat_sys_keyctl_wrapper: 1802 + llgfr %r2,%r2 # u32 1803 + llgfr %r3,%r3 # u32 1804 + llgfr %r4,%r4 # u32 1805 + llgfr %r5,%r5 # u32 1806 + llgfr %r6,%r6 # u32 1807 + jg compat_sys_keyctl # branch to system call
+6 -6
arch/s390/kernel/syscalls.S
··· 194 194 SYSCALL(sys_getcwd,sys_getcwd,sys32_getcwd_wrapper) 195 195 SYSCALL(sys_capget,sys_capget,sys32_capget_wrapper) 196 196 SYSCALL(sys_capset,sys_capset,sys32_capset_wrapper) /* 185 */ 197 - SYSCALL(sys_sigaltstack,sys_sigaltstack,sys32_sigaltstack) 197 + SYSCALL(sys_sigaltstack,sys_sigaltstack,sys32_sigaltstack_wrapper) 198 198 SYSCALL(sys_sendfile,sys_sendfile64,sys32_sendfile_wrapper) 199 199 NI_SYSCALL /* streams1 */ 200 200 NI_SYSCALL /* streams2 */ ··· 230 230 SYSCALL(sys_madvise,sys_madvise,sys32_madvise_wrapper) 231 231 SYSCALL(sys_getdents64,sys_getdents64,sys32_getdents64_wrapper) /* 220 */ 232 232 SYSCALL(sys_fcntl64,sys_ni_syscall,compat_sys_fcntl64_wrapper) 233 - SYSCALL(sys_readahead,sys_readahead,sys32_readahead) 234 - SYSCALL(sys_sendfile64,sys_ni_syscall,sys32_sendfile64) 233 + SYSCALL(sys_readahead,sys_readahead,sys32_readahead_wrapper) 234 + SYSCALL(sys_sendfile64,sys_ni_syscall,sys32_sendfile64_wrapper) 235 235 SYSCALL(sys_setxattr,sys_setxattr,sys32_setxattr_wrapper) 236 236 SYSCALL(sys_lsetxattr,sys_lsetxattr,sys32_lsetxattr_wrapper) /* 225 */ 237 237 SYSCALL(sys_fsetxattr,sys_fsetxattr,sys32_fsetxattr_wrapper) ··· 245 245 SYSCALL(sys_lremovexattr,sys_lremovexattr,sys32_lremovexattr_wrapper) 246 246 SYSCALL(sys_fremovexattr,sys_fremovexattr,sys32_fremovexattr_wrapper) /* 235 */ 247 247 SYSCALL(sys_gettid,sys_gettid,sys_gettid) 248 - SYSCALL(sys_tkill,sys_tkill,sys_tkill) 248 + SYSCALL(sys_tkill,sys_tkill,sys_tkill_wrapper) 249 249 SYSCALL(sys_futex,sys_futex,compat_sys_futex_wrapper) 250 250 SYSCALL(sys_sched_setaffinity,sys_sched_setaffinity,sys32_sched_setaffinity_wrapper) 251 251 SYSCALL(sys_sched_getaffinity,sys_sched_getaffinity,sys32_sched_getaffinity_wrapper) /* 240 */ 252 - SYSCALL(sys_tgkill,sys_tgkill,sys_tgkill) 252 + SYSCALL(sys_tgkill,sys_tgkill,sys_tgkill_wrapper) 253 253 NI_SYSCALL /* reserved for TUX */ 254 254 SYSCALL(sys_io_setup,sys_io_setup,sys32_io_setup_wrapper) 255 255 SYSCALL(sys_io_destroy,sys_io_destroy,sys32_io_destroy_wrapper) ··· 288 288 SYSCALL(sys_kexec_load,sys_kexec_load,compat_sys_kexec_load_wrapper) 289 289 SYSCALL(sys_add_key,sys_add_key,compat_sys_add_key_wrapper) 290 290 SYSCALL(sys_request_key,sys_request_key,compat_sys_request_key_wrapper) 291 - SYSCALL(sys_keyctl,sys_keyctl,compat_sys_keyctl) /* 280 */ 291 + SYSCALL(sys_keyctl,sys_keyctl,compat_sys_keyctl_wrapper) /* 280 */ 292 292 SYSCALL(sys_waitid,sys_waitid,compat_sys_waitid_wrapper) 293 293 SYSCALL(sys_ioprio_set,sys_ioprio_set,sys_ioprio_set_wrapper) 294 294 SYSCALL(sys_ioprio_get,sys_ioprio_get,sys_ioprio_get_wrapper)
+4 -2
arch/s390/kernel/time.c
··· 399 399 400 400 static void __init time_init_wq(void) 401 401 { 402 - if (!time_sync_wq) 403 - time_sync_wq = create_singlethread_workqueue("timesync"); 402 + if (time_sync_wq) 403 + return; 404 + time_sync_wq = create_singlethread_workqueue("timesync"); 405 + stop_machine_create(); 404 406 } 405 407 406 408 /*
+4
arch/s390/kernel/vtime.c
··· 516 516 */ 517 517 void init_cpu_vtimer(void) 518 518 { 519 + struct thread_info *ti = current_thread_info(); 519 520 struct vtimer_queue *vq; 521 + 522 + S390_lowcore.user_timer = ti->user_timer; 523 + S390_lowcore.system_timer = ti->system_timer; 520 524 521 525 /* kick the virtual timer */ 522 526 asm volatile ("STCK %0" : "=m" (S390_lowcore.last_update_clock));