diff options
author | Dmitry Torokhov <dtor@insightbb.com> | 2006-09-19 01:56:44 -0400 |
---|---|---|
committer | Dmitry Torokhov <dtor@insightbb.com> | 2006-09-19 01:56:44 -0400 |
commit | 0612ec48762bf8712db1925b2e67246d2237ebab (patch) | |
tree | 01b0d69c9c9915015c0f23ad4263646dd5413e99 /arch/s390 | |
parent | 4263cf0fac28122c8381b6f4f9441a43cd93c81f (diff) | |
parent | 47a5c6fa0e204a2b63309c648bb2fde36836c826 (diff) |
Merge rsync://rsync.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/Kconfig | 9 | ||||
-rw-r--r-- | arch/s390/appldata/appldata_base.c | 8 | ||||
-rw-r--r-- | arch/s390/defconfig | 44 | ||||
-rw-r--r-- | arch/s390/hypfs/hypfs_diag.c | 2 | ||||
-rw-r--r-- | arch/s390/kernel/Makefile | 6 | ||||
-rw-r--r-- | arch/s390/kernel/audit.c | 66 | ||||
-rw-r--r-- | arch/s390/kernel/compat_audit.c | 38 | ||||
-rw-r--r-- | arch/s390/kernel/compat_linux.c | 19 | ||||
-rw-r--r-- | arch/s390/kernel/head31.S | 4 | ||||
-rw-r--r-- | arch/s390/kernel/head64.S | 4 | ||||
-rw-r--r-- | arch/s390/kernel/machine_kexec.c | 1 | ||||
-rw-r--r-- | arch/s390/kernel/module.c | 2 | ||||
-rw-r--r-- | arch/s390/kernel/process.c | 2 | ||||
-rw-r--r-- | arch/s390/kernel/profile.c | 2 | ||||
-rw-r--r-- | arch/s390/kernel/s390_ext.c | 2 | ||||
-rw-r--r-- | arch/s390/kernel/setup.c | 46 | ||||
-rw-r--r-- | arch/s390/kernel/time.c | 2 | ||||
-rw-r--r-- | arch/s390/kernel/traps.c | 18 | ||||
-rw-r--r-- | arch/s390/lib/string.c | 4 | ||||
-rw-r--r-- | arch/s390/lib/uaccess.S | 33 | ||||
-rw-r--r-- | arch/s390/lib/uaccess64.S | 35 | ||||
-rw-r--r-- | arch/s390/mm/cmm.c | 2 | ||||
-rw-r--r-- | arch/s390/mm/fault.c | 2 | ||||
-rw-r--r-- | arch/s390/mm/init.c | 6 |
24 files changed, 260 insertions, 97 deletions
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index 224fbff79969..2f4f70c4dbb2 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig | |||
@@ -118,12 +118,9 @@ config SYSVIPC_COMPAT | |||
118 | depends on COMPAT && SYSVIPC | 118 | depends on COMPAT && SYSVIPC |
119 | default y | 119 | default y |
120 | 120 | ||
121 | config BINFMT_ELF32 | 121 | config AUDIT_ARCH |
122 | tristate "Kernel support for 31 bit ELF binaries" | 122 | bool |
123 | depends on COMPAT | 123 | default y |
124 | help | ||
125 | This allows you to run 32-bit Linux/ELF binaries on your zSeries | ||
126 | in 64 bit mode. Everybody wants this; say Y. | ||
127 | 124 | ||
128 | comment "Code generation options" | 125 | comment "Code generation options" |
129 | 126 | ||
diff --git a/arch/s390/appldata/appldata_base.c b/arch/s390/appldata/appldata_base.c index d0f82c995af6..a0a94e0ef8d1 100644 --- a/arch/s390/appldata/appldata_base.c +++ b/arch/s390/appldata/appldata_base.c | |||
@@ -617,6 +617,7 @@ appldata_offline_cpu(int cpu) | |||
617 | spin_unlock(&appldata_timer_lock); | 617 | spin_unlock(&appldata_timer_lock); |
618 | } | 618 | } |
619 | 619 | ||
620 | #ifdef CONFIG_HOTPLUG_CPU | ||
620 | static int __cpuinit | 621 | static int __cpuinit |
621 | appldata_cpu_notify(struct notifier_block *self, | 622 | appldata_cpu_notify(struct notifier_block *self, |
622 | unsigned long action, void *hcpu) | 623 | unsigned long action, void *hcpu) |
@@ -625,20 +626,19 @@ appldata_cpu_notify(struct notifier_block *self, | |||
625 | case CPU_ONLINE: | 626 | case CPU_ONLINE: |
626 | appldata_online_cpu((long) hcpu); | 627 | appldata_online_cpu((long) hcpu); |
627 | break; | 628 | break; |
628 | #ifdef CONFIG_HOTPLUG_CPU | ||
629 | case CPU_DEAD: | 629 | case CPU_DEAD: |
630 | appldata_offline_cpu((long) hcpu); | 630 | appldata_offline_cpu((long) hcpu); |
631 | break; | 631 | break; |
632 | #endif | ||
633 | default: | 632 | default: |
634 | break; | 633 | break; |
635 | } | 634 | } |
636 | return NOTIFY_OK; | 635 | return NOTIFY_OK; |
637 | } | 636 | } |
638 | 637 | ||
639 | static struct notifier_block __devinitdata appldata_nb = { | 638 | static struct notifier_block appldata_nb = { |
640 | .notifier_call = appldata_cpu_notify, | 639 | .notifier_call = appldata_cpu_notify, |
641 | }; | 640 | }; |
641 | #endif | ||
642 | 642 | ||
643 | /* | 643 | /* |
644 | * appldata_init() | 644 | * appldata_init() |
@@ -662,7 +662,7 @@ static int __init appldata_init(void) | |||
662 | appldata_online_cpu(i); | 662 | appldata_online_cpu(i); |
663 | 663 | ||
664 | /* Register cpu hotplug notifier */ | 664 | /* Register cpu hotplug notifier */ |
665 | register_cpu_notifier(&appldata_nb); | 665 | register_hotcpu_notifier(&appldata_nb); |
666 | 666 | ||
667 | appldata_sysctl_header = register_sysctl_table(appldata_dir_table, 1); | 667 | appldata_sysctl_header = register_sysctl_table(appldata_dir_table, 1); |
668 | #ifdef MODULE | 668 | #ifdef MODULE |
diff --git a/arch/s390/defconfig b/arch/s390/defconfig index f4dfc10026d2..f1d4591eddbb 100644 --- a/arch/s390/defconfig +++ b/arch/s390/defconfig | |||
@@ -1,13 +1,16 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.17-rc1 | 3 | # Linux kernel version: 2.6.18-rc2 |
4 | # Mon Apr 3 14:34:15 2006 | 4 | # Thu Jul 27 13:51:07 2006 |
5 | # | 5 | # |
6 | CONFIG_MMU=y | 6 | CONFIG_MMU=y |
7 | CONFIG_LOCKDEP_SUPPORT=y | ||
8 | CONFIG_STACKTRACE_SUPPORT=y | ||
7 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 9 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
8 | CONFIG_GENERIC_HWEIGHT=y | 10 | CONFIG_GENERIC_HWEIGHT=y |
9 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 11 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
10 | CONFIG_S390=y | 12 | CONFIG_S390=y |
13 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
11 | 14 | ||
12 | # | 15 | # |
13 | # Code maturity level options | 16 | # Code maturity level options |
@@ -25,6 +28,7 @@ CONFIG_SWAP=y | |||
25 | CONFIG_SYSVIPC=y | 28 | CONFIG_SYSVIPC=y |
26 | CONFIG_POSIX_MQUEUE=y | 29 | CONFIG_POSIX_MQUEUE=y |
27 | # CONFIG_BSD_PROCESS_ACCT is not set | 30 | # CONFIG_BSD_PROCESS_ACCT is not set |
31 | # CONFIG_TASKSTATS is not set | ||
28 | CONFIG_SYSCTL=y | 32 | CONFIG_SYSCTL=y |
29 | CONFIG_AUDIT=y | 33 | CONFIG_AUDIT=y |
30 | # CONFIG_AUDITSYSCALL is not set | 34 | # CONFIG_AUDITSYSCALL is not set |
@@ -43,10 +47,12 @@ CONFIG_PRINTK=y | |||
43 | CONFIG_BUG=y | 47 | CONFIG_BUG=y |
44 | CONFIG_ELF_CORE=y | 48 | CONFIG_ELF_CORE=y |
45 | CONFIG_BASE_FULL=y | 49 | CONFIG_BASE_FULL=y |
50 | CONFIG_RT_MUTEXES=y | ||
46 | CONFIG_FUTEX=y | 51 | CONFIG_FUTEX=y |
47 | CONFIG_EPOLL=y | 52 | CONFIG_EPOLL=y |
48 | CONFIG_SHMEM=y | 53 | CONFIG_SHMEM=y |
49 | CONFIG_SLAB=y | 54 | CONFIG_SLAB=y |
55 | CONFIG_VM_EVENT_COUNTERS=y | ||
50 | # CONFIG_TINY_SHMEM is not set | 56 | # CONFIG_TINY_SHMEM is not set |
51 | CONFIG_BASE_SMALL=0 | 57 | CONFIG_BASE_SMALL=0 |
52 | # CONFIG_SLOB is not set | 58 | # CONFIG_SLOB is not set |
@@ -94,7 +100,6 @@ CONFIG_HOTPLUG_CPU=y | |||
94 | CONFIG_DEFAULT_MIGRATION_COST=1000000 | 100 | CONFIG_DEFAULT_MIGRATION_COST=1000000 |
95 | CONFIG_COMPAT=y | 101 | CONFIG_COMPAT=y |
96 | CONFIG_SYSVIPC_COMPAT=y | 102 | CONFIG_SYSVIPC_COMPAT=y |
97 | CONFIG_BINFMT_ELF32=y | ||
98 | 103 | ||
99 | # | 104 | # |
100 | # Code generation options | 105 | # Code generation options |
@@ -115,6 +120,7 @@ CONFIG_FLATMEM=y | |||
115 | CONFIG_FLAT_NODE_MEM_MAP=y | 120 | CONFIG_FLAT_NODE_MEM_MAP=y |
116 | # CONFIG_SPARSEMEM_STATIC is not set | 121 | # CONFIG_SPARSEMEM_STATIC is not set |
117 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 122 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
123 | CONFIG_RESOURCES_64BIT=y | ||
118 | 124 | ||
119 | # | 125 | # |
120 | # I/O subsystem configuration | 126 | # I/O subsystem configuration |
@@ -142,6 +148,7 @@ CONFIG_VIRT_CPU_ACCOUNTING=y | |||
142 | # CONFIG_APPLDATA_BASE is not set | 148 | # CONFIG_APPLDATA_BASE is not set |
143 | CONFIG_NO_IDLE_HZ=y | 149 | CONFIG_NO_IDLE_HZ=y |
144 | CONFIG_NO_IDLE_HZ_INIT=y | 150 | CONFIG_NO_IDLE_HZ_INIT=y |
151 | CONFIG_S390_HYPFS_FS=y | ||
145 | CONFIG_KEXEC=y | 152 | CONFIG_KEXEC=y |
146 | 153 | ||
147 | # | 154 | # |
@@ -174,6 +181,8 @@ CONFIG_IP_FIB_HASH=y | |||
174 | # CONFIG_INET_IPCOMP is not set | 181 | # CONFIG_INET_IPCOMP is not set |
175 | # CONFIG_INET_XFRM_TUNNEL is not set | 182 | # CONFIG_INET_XFRM_TUNNEL is not set |
176 | # CONFIG_INET_TUNNEL is not set | 183 | # CONFIG_INET_TUNNEL is not set |
184 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | ||
185 | CONFIG_INET_XFRM_MODE_TUNNEL=y | ||
177 | CONFIG_INET_DIAG=y | 186 | CONFIG_INET_DIAG=y |
178 | CONFIG_INET_TCP_DIAG=y | 187 | CONFIG_INET_TCP_DIAG=y |
179 | # CONFIG_TCP_CONG_ADVANCED is not set | 188 | # CONFIG_TCP_CONG_ADVANCED is not set |
@@ -186,7 +195,10 @@ CONFIG_IPV6=y | |||
186 | # CONFIG_INET6_IPCOMP is not set | 195 | # CONFIG_INET6_IPCOMP is not set |
187 | # CONFIG_INET6_XFRM_TUNNEL is not set | 196 | # CONFIG_INET6_XFRM_TUNNEL is not set |
188 | # CONFIG_INET6_TUNNEL is not set | 197 | # CONFIG_INET6_TUNNEL is not set |
198 | CONFIG_INET6_XFRM_MODE_TRANSPORT=y | ||
199 | CONFIG_INET6_XFRM_MODE_TUNNEL=y | ||
189 | # CONFIG_IPV6_TUNNEL is not set | 200 | # CONFIG_IPV6_TUNNEL is not set |
201 | # CONFIG_NETWORK_SECMARK is not set | ||
190 | # CONFIG_NETFILTER is not set | 202 | # CONFIG_NETFILTER is not set |
191 | 203 | ||
192 | # | 204 | # |
@@ -263,6 +275,7 @@ CONFIG_NET_ESTIMATOR=y | |||
263 | # Network testing | 275 | # Network testing |
264 | # | 276 | # |
265 | # CONFIG_NET_PKTGEN is not set | 277 | # CONFIG_NET_PKTGEN is not set |
278 | # CONFIG_NET_TCPPROBE is not set | ||
266 | # CONFIG_HAMRADIO is not set | 279 | # CONFIG_HAMRADIO is not set |
267 | # CONFIG_IRDA is not set | 280 | # CONFIG_IRDA is not set |
268 | # CONFIG_BT is not set | 281 | # CONFIG_BT is not set |
@@ -276,6 +289,7 @@ CONFIG_STANDALONE=y | |||
276 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 289 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
277 | # CONFIG_FW_LOADER is not set | 290 | # CONFIG_FW_LOADER is not set |
278 | # CONFIG_DEBUG_DRIVER is not set | 291 | # CONFIG_DEBUG_DRIVER is not set |
292 | CONFIG_SYS_HYPERVISOR=y | ||
279 | 293 | ||
280 | # | 294 | # |
281 | # Connector - unified userspace <-> kernelspace linker | 295 | # Connector - unified userspace <-> kernelspace linker |
@@ -334,6 +348,7 @@ CONFIG_BLK_DEV_NBD=m | |||
334 | CONFIG_BLK_DEV_RAM=y | 348 | CONFIG_BLK_DEV_RAM=y |
335 | CONFIG_BLK_DEV_RAM_COUNT=16 | 349 | CONFIG_BLK_DEV_RAM_COUNT=16 |
336 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 350 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
351 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | ||
337 | CONFIG_BLK_DEV_INITRD=y | 352 | CONFIG_BLK_DEV_INITRD=y |
338 | # CONFIG_CDROM_PKTCDVD is not set | 353 | # CONFIG_CDROM_PKTCDVD is not set |
339 | 354 | ||
@@ -359,9 +374,7 @@ CONFIG_MD_LINEAR=m | |||
359 | CONFIG_MD_RAID0=m | 374 | CONFIG_MD_RAID0=m |
360 | CONFIG_MD_RAID1=m | 375 | CONFIG_MD_RAID1=m |
361 | # CONFIG_MD_RAID10 is not set | 376 | # CONFIG_MD_RAID10 is not set |
362 | CONFIG_MD_RAID5=m | 377 | # CONFIG_MD_RAID456 is not set |
363 | # CONFIG_MD_RAID5_RESHAPE is not set | ||
364 | # CONFIG_MD_RAID6 is not set | ||
365 | CONFIG_MD_MULTIPATH=m | 378 | CONFIG_MD_MULTIPATH=m |
366 | # CONFIG_MD_FAULTY is not set | 379 | # CONFIG_MD_FAULTY is not set |
367 | CONFIG_BLK_DEV_DM=y | 380 | CONFIG_BLK_DEV_DM=y |
@@ -419,7 +432,8 @@ CONFIG_S390_TAPE_34XX=m | |||
419 | # | 432 | # |
420 | # Cryptographic devices | 433 | # Cryptographic devices |
421 | # | 434 | # |
422 | CONFIG_Z90CRYPT=m | 435 | CONFIG_ZCRYPT=m |
436 | # CONFIG_ZCRYPT_MONOLITHIC is not set | ||
423 | 437 | ||
424 | # | 438 | # |
425 | # Network device support | 439 | # Network device support |
@@ -509,6 +523,7 @@ CONFIG_FS_MBCACHE=y | |||
509 | # CONFIG_MINIX_FS is not set | 523 | # CONFIG_MINIX_FS is not set |
510 | # CONFIG_ROMFS_FS is not set | 524 | # CONFIG_ROMFS_FS is not set |
511 | CONFIG_INOTIFY=y | 525 | CONFIG_INOTIFY=y |
526 | CONFIG_INOTIFY_USER=y | ||
512 | # CONFIG_QUOTA is not set | 527 | # CONFIG_QUOTA is not set |
513 | CONFIG_DNOTIFY=y | 528 | CONFIG_DNOTIFY=y |
514 | # CONFIG_AUTOFS_FS is not set | 529 | # CONFIG_AUTOFS_FS is not set |
@@ -614,26 +629,36 @@ CONFIG_MSDOS_PARTITION=y | |||
614 | # Instrumentation Support | 629 | # Instrumentation Support |
615 | # | 630 | # |
616 | # CONFIG_PROFILING is not set | 631 | # CONFIG_PROFILING is not set |
617 | # CONFIG_STATISTICS is not set | 632 | CONFIG_STATISTICS=y |
633 | CONFIG_KPROBES=y | ||
618 | 634 | ||
619 | # | 635 | # |
620 | # Kernel hacking | 636 | # Kernel hacking |
621 | # | 637 | # |
638 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
622 | # CONFIG_PRINTK_TIME is not set | 639 | # CONFIG_PRINTK_TIME is not set |
623 | CONFIG_MAGIC_SYSRQ=y | 640 | CONFIG_MAGIC_SYSRQ=y |
641 | # CONFIG_UNUSED_SYMBOLS is not set | ||
624 | CONFIG_DEBUG_KERNEL=y | 642 | CONFIG_DEBUG_KERNEL=y |
625 | CONFIG_LOG_BUF_SHIFT=17 | 643 | CONFIG_LOG_BUF_SHIFT=17 |
626 | # CONFIG_DETECT_SOFTLOCKUP is not set | 644 | # CONFIG_DETECT_SOFTLOCKUP is not set |
627 | # CONFIG_SCHEDSTATS is not set | 645 | # CONFIG_SCHEDSTATS is not set |
628 | # CONFIG_DEBUG_SLAB is not set | 646 | # CONFIG_DEBUG_SLAB is not set |
629 | CONFIG_DEBUG_PREEMPT=y | 647 | CONFIG_DEBUG_PREEMPT=y |
630 | CONFIG_DEBUG_MUTEXES=y | 648 | # CONFIG_DEBUG_RT_MUTEXES is not set |
649 | # CONFIG_RT_MUTEX_TESTER is not set | ||
631 | CONFIG_DEBUG_SPINLOCK=y | 650 | CONFIG_DEBUG_SPINLOCK=y |
651 | CONFIG_DEBUG_MUTEXES=y | ||
652 | # CONFIG_DEBUG_RWSEMS is not set | ||
653 | # CONFIG_DEBUG_LOCK_ALLOC is not set | ||
654 | # CONFIG_PROVE_LOCKING is not set | ||
632 | CONFIG_DEBUG_SPINLOCK_SLEEP=y | 655 | CONFIG_DEBUG_SPINLOCK_SLEEP=y |
656 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
633 | # CONFIG_DEBUG_KOBJECT is not set | 657 | # CONFIG_DEBUG_KOBJECT is not set |
634 | # CONFIG_DEBUG_INFO is not set | 658 | # CONFIG_DEBUG_INFO is not set |
635 | CONFIG_DEBUG_FS=y | 659 | CONFIG_DEBUG_FS=y |
636 | # CONFIG_DEBUG_VM is not set | 660 | # CONFIG_DEBUG_VM is not set |
661 | # CONFIG_FRAME_POINTER is not set | ||
637 | # CONFIG_UNWIND_INFO is not set | 662 | # CONFIG_UNWIND_INFO is not set |
638 | CONFIG_FORCED_INLINING=y | 663 | CONFIG_FORCED_INLINING=y |
639 | # CONFIG_RCU_TORTURE_TEST is not set | 664 | # CONFIG_RCU_TORTURE_TEST is not set |
@@ -688,3 +713,4 @@ CONFIG_CRYPTO=y | |||
688 | # CONFIG_CRC16 is not set | 713 | # CONFIG_CRC16 is not set |
689 | CONFIG_CRC32=m | 714 | CONFIG_CRC32=m |
690 | # CONFIG_LIBCRC32C is not set | 715 | # CONFIG_LIBCRC32C is not set |
716 | CONFIG_PLIST=y | ||
diff --git a/arch/s390/hypfs/hypfs_diag.c b/arch/s390/hypfs/hypfs_diag.c index efa74af7f04a..1785bce2b919 100644 --- a/arch/s390/hypfs/hypfs_diag.c +++ b/arch/s390/hypfs/hypfs_diag.c | |||
@@ -403,7 +403,7 @@ static void *diag204_get_buffer(enum diag204_format fmt, int *pages) | |||
403 | *pages = 1; | 403 | *pages = 1; |
404 | return diag204_alloc_rbuf(); | 404 | return diag204_alloc_rbuf(); |
405 | } else {/* INFO_EXT */ | 405 | } else {/* INFO_EXT */ |
406 | *pages = diag204(SUBC_RSI | INFO_EXT, 0, 0); | 406 | *pages = diag204(SUBC_RSI | INFO_EXT, 0, NULL); |
407 | if (*pages <= 0) | 407 | if (*pages <= 0) |
408 | return ERR_PTR(-ENOSYS); | 408 | return ERR_PTR(-ENOSYS); |
409 | else | 409 | else |
diff --git a/arch/s390/kernel/Makefile b/arch/s390/kernel/Makefile index eabf00a6f770..9a33ed6ca696 100644 --- a/arch/s390/kernel/Makefile +++ b/arch/s390/kernel/Makefile | |||
@@ -16,9 +16,11 @@ extra-y += head.o init_task.o vmlinux.lds | |||
16 | obj-$(CONFIG_MODULES) += s390_ksyms.o module.o | 16 | obj-$(CONFIG_MODULES) += s390_ksyms.o module.o |
17 | obj-$(CONFIG_SMP) += smp.o | 17 | obj-$(CONFIG_SMP) += smp.o |
18 | 18 | ||
19 | obj-$(CONFIG_AUDIT) += audit.o | ||
20 | compat-obj-$(CONFIG_AUDIT) += compat_audit.o | ||
19 | obj-$(CONFIG_COMPAT) += compat_linux.o compat_signal.o \ | 21 | obj-$(CONFIG_COMPAT) += compat_linux.o compat_signal.o \ |
20 | compat_wrapper.o compat_exec_domain.o | 22 | compat_wrapper.o compat_exec_domain.o \ |
21 | obj-$(CONFIG_BINFMT_ELF32) += binfmt_elf32.o | 23 | binfmt_elf32.o $(compat-obj-y) |
22 | 24 | ||
23 | obj-$(CONFIG_VIRT_TIMER) += vtime.o | 25 | obj-$(CONFIG_VIRT_TIMER) += vtime.o |
24 | obj-$(CONFIG_STACKTRACE) += stacktrace.o | 26 | obj-$(CONFIG_STACKTRACE) += stacktrace.o |
diff --git a/arch/s390/kernel/audit.c b/arch/s390/kernel/audit.c new file mode 100644 index 000000000000..0741d9193390 --- /dev/null +++ b/arch/s390/kernel/audit.c | |||
@@ -0,0 +1,66 @@ | |||
1 | #include <linux/init.h> | ||
2 | #include <linux/types.h> | ||
3 | #include <linux/audit.h> | ||
4 | #include <asm/unistd.h> | ||
5 | |||
6 | static unsigned dir_class[] = { | ||
7 | #include <asm-generic/audit_dir_write.h> | ||
8 | ~0U | ||
9 | }; | ||
10 | |||
11 | static unsigned read_class[] = { | ||
12 | #include <asm-generic/audit_read.h> | ||
13 | ~0U | ||
14 | }; | ||
15 | |||
16 | static unsigned write_class[] = { | ||
17 | #include <asm-generic/audit_write.h> | ||
18 | ~0U | ||
19 | }; | ||
20 | |||
21 | static unsigned chattr_class[] = { | ||
22 | #include <asm-generic/audit_change_attr.h> | ||
23 | ~0U | ||
24 | }; | ||
25 | |||
26 | int audit_classify_syscall(int abi, unsigned syscall) | ||
27 | { | ||
28 | #ifdef CONFIG_COMPAT | ||
29 | extern int s390_classify_syscall(unsigned); | ||
30 | if (abi == AUDIT_ARCH_S390) | ||
31 | return s390_classify_syscall(syscall); | ||
32 | #endif | ||
33 | switch(syscall) { | ||
34 | case __NR_open: | ||
35 | return 2; | ||
36 | case __NR_openat: | ||
37 | return 3; | ||
38 | case __NR_socketcall: | ||
39 | return 4; | ||
40 | case __NR_execve: | ||
41 | return 5; | ||
42 | default: | ||
43 | return 0; | ||
44 | } | ||
45 | } | ||
46 | |||
47 | static int __init audit_classes_init(void) | ||
48 | { | ||
49 | #ifdef CONFIG_COMPAT | ||
50 | extern __u32 s390_dir_class[]; | ||
51 | extern __u32 s390_write_class[]; | ||
52 | extern __u32 s390_read_class[]; | ||
53 | extern __u32 s390_chattr_class[]; | ||
54 | audit_register_class(AUDIT_CLASS_WRITE_32, s390_write_class); | ||
55 | audit_register_class(AUDIT_CLASS_READ_32, s390_read_class); | ||
56 | audit_register_class(AUDIT_CLASS_DIR_WRITE_32, s390_dir_class); | ||
57 | audit_register_class(AUDIT_CLASS_CHATTR_32, s390_chattr_class); | ||
58 | #endif | ||
59 | audit_register_class(AUDIT_CLASS_WRITE, write_class); | ||
60 | audit_register_class(AUDIT_CLASS_READ, read_class); | ||
61 | audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class); | ||
62 | audit_register_class(AUDIT_CLASS_CHATTR, chattr_class); | ||
63 | return 0; | ||
64 | } | ||
65 | |||
66 | __initcall(audit_classes_init); | ||
diff --git a/arch/s390/kernel/compat_audit.c b/arch/s390/kernel/compat_audit.c new file mode 100644 index 000000000000..16d9436bfa91 --- /dev/null +++ b/arch/s390/kernel/compat_audit.c | |||
@@ -0,0 +1,38 @@ | |||
1 | #undef __s390x__ | ||
2 | #include <asm/unistd.h> | ||
3 | |||
4 | unsigned s390_dir_class[] = { | ||
5 | #include <asm-generic/audit_dir_write.h> | ||
6 | ~0U | ||
7 | }; | ||
8 | |||
9 | unsigned s390_chattr_class[] = { | ||
10 | #include <asm-generic/audit_change_attr.h> | ||
11 | ~0U | ||
12 | }; | ||
13 | |||
14 | unsigned s390_write_class[] = { | ||
15 | #include <asm-generic/audit_write.h> | ||
16 | ~0U | ||
17 | }; | ||
18 | |||
19 | unsigned s390_read_class[] = { | ||
20 | #include <asm-generic/audit_read.h> | ||
21 | ~0U | ||
22 | }; | ||
23 | |||
24 | int s390_classify_syscall(unsigned syscall) | ||
25 | { | ||
26 | switch(syscall) { | ||
27 | case __NR_open: | ||
28 | return 2; | ||
29 | case __NR_openat: | ||
30 | return 3; | ||
31 | case __NR_socketcall: | ||
32 | return 4; | ||
33 | case __NR_execve: | ||
34 | return 5; | ||
35 | default: | ||
36 | return 1; | ||
37 | } | ||
38 | } | ||
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c index cabb4ff54cd7..785c9f70ac98 100644 --- a/arch/s390/kernel/compat_linux.c +++ b/arch/s390/kernel/compat_linux.c | |||
@@ -409,7 +409,7 @@ asmlinkage long sys32_sysinfo(struct sysinfo32 __user *info) | |||
409 | mm_segment_t old_fs = get_fs (); | 409 | mm_segment_t old_fs = get_fs (); |
410 | 410 | ||
411 | set_fs (KERNEL_DS); | 411 | set_fs (KERNEL_DS); |
412 | ret = sys_sysinfo(&s); | 412 | ret = sys_sysinfo((struct sysinfo __user *) &s); |
413 | set_fs (old_fs); | 413 | set_fs (old_fs); |
414 | err = put_user (s.uptime, &info->uptime); | 414 | err = put_user (s.uptime, &info->uptime); |
415 | err |= __put_user (s.loads[0], &info->loads[0]); | 415 | err |= __put_user (s.loads[0], &info->loads[0]); |
@@ -438,7 +438,7 @@ asmlinkage long sys32_sched_rr_get_interval(compat_pid_t pid, | |||
438 | mm_segment_t old_fs = get_fs (); | 438 | mm_segment_t old_fs = get_fs (); |
439 | 439 | ||
440 | set_fs (KERNEL_DS); | 440 | set_fs (KERNEL_DS); |
441 | ret = sys_sched_rr_get_interval(pid, &t); | 441 | ret = sys_sched_rr_get_interval(pid, (struct timespec __user *) &t); |
442 | set_fs (old_fs); | 442 | set_fs (old_fs); |
443 | if (put_compat_timespec(&t, interval)) | 443 | if (put_compat_timespec(&t, interval)) |
444 | return -EFAULT; | 444 | return -EFAULT; |
@@ -464,7 +464,10 @@ asmlinkage long sys32_rt_sigprocmask(int how, compat_sigset_t __user *set, | |||
464 | } | 464 | } |
465 | } | 465 | } |
466 | set_fs (KERNEL_DS); | 466 | set_fs (KERNEL_DS); |
467 | ret = sys_rt_sigprocmask(how, set ? &s : NULL, oset ? &s : NULL, sigsetsize); | 467 | ret = sys_rt_sigprocmask(how, |
468 | set ? (sigset_t __user *) &s : NULL, | ||
469 | oset ? (sigset_t __user *) &s : NULL, | ||
470 | sigsetsize); | ||
468 | set_fs (old_fs); | 471 | set_fs (old_fs); |
469 | if (ret) return ret; | 472 | if (ret) return ret; |
470 | if (oset) { | 473 | if (oset) { |
@@ -489,7 +492,7 @@ asmlinkage long sys32_rt_sigpending(compat_sigset_t __user *set, | |||
489 | mm_segment_t old_fs = get_fs(); | 492 | mm_segment_t old_fs = get_fs(); |
490 | 493 | ||
491 | set_fs (KERNEL_DS); | 494 | set_fs (KERNEL_DS); |
492 | ret = sys_rt_sigpending(&s, sigsetsize); | 495 | ret = sys_rt_sigpending((sigset_t __user *) &s, sigsetsize); |
493 | set_fs (old_fs); | 496 | set_fs (old_fs); |
494 | if (!ret) { | 497 | if (!ret) { |
495 | switch (_NSIG_WORDS) { | 498 | switch (_NSIG_WORDS) { |
@@ -514,7 +517,7 @@ sys32_rt_sigqueueinfo(int pid, int sig, compat_siginfo_t __user *uinfo) | |||
514 | if (copy_siginfo_from_user32(&info, uinfo)) | 517 | if (copy_siginfo_from_user32(&info, uinfo)) |
515 | return -EFAULT; | 518 | return -EFAULT; |
516 | set_fs (KERNEL_DS); | 519 | set_fs (KERNEL_DS); |
517 | ret = sys_rt_sigqueueinfo(pid, sig, &info); | 520 | ret = sys_rt_sigqueueinfo(pid, sig, (siginfo_t __user *) &info); |
518 | set_fs (old_fs); | 521 | set_fs (old_fs); |
519 | return ret; | 522 | return ret; |
520 | } | 523 | } |
@@ -674,7 +677,8 @@ asmlinkage long sys32_sendfile(int out_fd, int in_fd, compat_off_t __user *offse | |||
674 | return -EFAULT; | 677 | return -EFAULT; |
675 | 678 | ||
676 | set_fs(KERNEL_DS); | 679 | set_fs(KERNEL_DS); |
677 | ret = sys_sendfile(out_fd, in_fd, offset ? &of : NULL, count); | 680 | ret = sys_sendfile(out_fd, in_fd, |
681 | offset ? (off_t __user *) &of : NULL, count); | ||
678 | set_fs(old_fs); | 682 | set_fs(old_fs); |
679 | 683 | ||
680 | if (offset && put_user(of, offset)) | 684 | if (offset && put_user(of, offset)) |
@@ -694,7 +698,8 @@ asmlinkage long sys32_sendfile64(int out_fd, int in_fd, | |||
694 | return -EFAULT; | 698 | return -EFAULT; |
695 | 699 | ||
696 | set_fs(KERNEL_DS); | 700 | set_fs(KERNEL_DS); |
697 | ret = sys_sendfile64(out_fd, in_fd, offset ? &lof : NULL, count); | 701 | ret = sys_sendfile64(out_fd, in_fd, |
702 | offset ? (loff_t __user *) &lof : NULL, count); | ||
698 | set_fs(old_fs); | 703 | set_fs(old_fs); |
699 | 704 | ||
700 | if (offset && put_user(lof, offset)) | 705 | if (offset && put_user(lof, offset)) |
diff --git a/arch/s390/kernel/head31.S b/arch/s390/kernel/head31.S index d00de17b3778..a4dc61f3285e 100644 --- a/arch/s390/kernel/head31.S +++ b/arch/s390/kernel/head31.S | |||
@@ -273,7 +273,7 @@ startup_continue: | |||
273 | .Lbss_end: .long _end | 273 | .Lbss_end: .long _end |
274 | .Lparmaddr: .long PARMAREA | 274 | .Lparmaddr: .long PARMAREA |
275 | .Lsccbaddr: .long .Lsccb | 275 | .Lsccbaddr: .long .Lsccb |
276 | .align 4096 | 276 | .org 0x12000 |
277 | .Lsccb: | 277 | .Lsccb: |
278 | .hword 0x1000 # length, one page | 278 | .hword 0x1000 # length, one page |
279 | .byte 0x00,0x00,0x00 | 279 | .byte 0x00,0x00,0x00 |
@@ -290,7 +290,7 @@ startup_continue: | |||
290 | .Lscpincr2: | 290 | .Lscpincr2: |
291 | .quad 0x00 | 291 | .quad 0x00 |
292 | .fill 3984,1,0 | 292 | .fill 3984,1,0 |
293 | .align 4096 | 293 | .org 0x13000 |
294 | 294 | ||
295 | #ifdef CONFIG_SHARED_KERNEL | 295 | #ifdef CONFIG_SHARED_KERNEL |
296 | .org 0x100000 | 296 | .org 0x100000 |
diff --git a/arch/s390/kernel/head64.S b/arch/s390/kernel/head64.S index 47744fcca930..9d80c5b1ef95 100644 --- a/arch/s390/kernel/head64.S +++ b/arch/s390/kernel/head64.S | |||
@@ -268,7 +268,7 @@ startup_continue: | |||
268 | .Lparmaddr: | 268 | .Lparmaddr: |
269 | .quad PARMAREA | 269 | .quad PARMAREA |
270 | 270 | ||
271 | .align 4096 | 271 | .org 0x12000 |
272 | .Lsccb: | 272 | .Lsccb: |
273 | .hword 0x1000 # length, one page | 273 | .hword 0x1000 # length, one page |
274 | .byte 0x00,0x00,0x00 | 274 | .byte 0x00,0x00,0x00 |
@@ -285,7 +285,7 @@ startup_continue: | |||
285 | .Lscpincr2: | 285 | .Lscpincr2: |
286 | .quad 0x00 | 286 | .quad 0x00 |
287 | .fill 3984,1,0 | 287 | .fill 3984,1,0 |
288 | .align 4096 | 288 | .org 0x13000 |
289 | 289 | ||
290 | #ifdef CONFIG_SHARED_KERNEL | 290 | #ifdef CONFIG_SHARED_KERNEL |
291 | .org 0x100000 | 291 | .org 0x100000 |
diff --git a/arch/s390/kernel/machine_kexec.c b/arch/s390/kernel/machine_kexec.c index fbde6a915264..60b1ea9f946b 100644 --- a/arch/s390/kernel/machine_kexec.c +++ b/arch/s390/kernel/machine_kexec.c | |||
@@ -63,6 +63,7 @@ NORET_TYPE void | |||
63 | machine_kexec(struct kimage *image) | 63 | machine_kexec(struct kimage *image) |
64 | { | 64 | { |
65 | clear_all_subchannels(); | 65 | clear_all_subchannels(); |
66 | cio_reset_channel_paths(); | ||
66 | 67 | ||
67 | /* Disable lowcore protection */ | 68 | /* Disable lowcore protection */ |
68 | ctl_clear_bit(0,28); | 69 | ctl_clear_bit(0,28); |
diff --git a/arch/s390/kernel/module.c b/arch/s390/kernel/module.c index c271cdab58e2..d989ed45a7aa 100644 --- a/arch/s390/kernel/module.c +++ b/arch/s390/kernel/module.c | |||
@@ -119,7 +119,7 @@ module_frob_arch_sections(Elf_Ehdr *hdr, Elf_Shdr *sechdrs, | |||
119 | int nrela, i, j; | 119 | int nrela, i, j; |
120 | 120 | ||
121 | /* Find symbol table and string table. */ | 121 | /* Find symbol table and string table. */ |
122 | symtab = 0; | 122 | symtab = NULL; |
123 | for (i = 0; i < hdr->e_shnum; i++) | 123 | for (i = 0; i < hdr->e_shnum; i++) |
124 | switch (sechdrs[i].sh_type) { | 124 | switch (sechdrs[i].sh_type) { |
125 | case SHT_SYMTAB: | 125 | case SHT_SYMTAB: |
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c index 78c8e5548caf..d3cbfa3005ec 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c | |||
@@ -172,7 +172,7 @@ void show_regs(struct pt_regs *regs) | |||
172 | show_registers(regs); | 172 | show_registers(regs); |
173 | /* Show stack backtrace if pt_regs is from kernel mode */ | 173 | /* Show stack backtrace if pt_regs is from kernel mode */ |
174 | if (!(regs->psw.mask & PSW_MASK_PSTATE)) | 174 | if (!(regs->psw.mask & PSW_MASK_PSTATE)) |
175 | show_trace(0,(unsigned long *) regs->gprs[15]); | 175 | show_trace(NULL, (unsigned long *) regs->gprs[15]); |
176 | } | 176 | } |
177 | 177 | ||
178 | extern void kernel_thread_starter(void); | 178 | extern void kernel_thread_starter(void); |
diff --git a/arch/s390/kernel/profile.c b/arch/s390/kernel/profile.c index 7ba777eec1a8..b81aa1f569ca 100644 --- a/arch/s390/kernel/profile.c +++ b/arch/s390/kernel/profile.c | |||
@@ -13,7 +13,7 @@ static struct proc_dir_entry * root_irq_dir; | |||
13 | void init_irq_proc(void) | 13 | void init_irq_proc(void) |
14 | { | 14 | { |
15 | /* create /proc/irq */ | 15 | /* create /proc/irq */ |
16 | root_irq_dir = proc_mkdir("irq", 0); | 16 | root_irq_dir = proc_mkdir("irq", NULL); |
17 | 17 | ||
18 | /* create /proc/irq/prof_cpu_mask */ | 18 | /* create /proc/irq/prof_cpu_mask */ |
19 | create_prof_cpu_mask(root_irq_dir); | 19 | create_prof_cpu_mask(root_irq_dir); |
diff --git a/arch/s390/kernel/s390_ext.c b/arch/s390/kernel/s390_ext.c index 207bc511a6e3..c1b383537fec 100644 --- a/arch/s390/kernel/s390_ext.c +++ b/arch/s390/kernel/s390_ext.c | |||
@@ -24,7 +24,7 @@ | |||
24 | * (0x1202 external call, 0x1004 cpu timer, 0x2401 hwc console, 0x4000 | 24 | * (0x1202 external call, 0x1004 cpu timer, 0x2401 hwc console, 0x4000 |
25 | * iucv and 0x2603 pfault) this is always the first element. | 25 | * iucv and 0x2603 pfault) this is always the first element. |
26 | */ | 26 | */ |
27 | ext_int_info_t *ext_int_hash[256] = { 0, }; | 27 | ext_int_info_t *ext_int_hash[256] = { NULL, }; |
28 | 28 | ||
29 | static inline int ext_hash(__u16 code) | 29 | static inline int ext_hash(__u16 code) |
30 | { | 30 | { |
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c index 1ca34f54ea8a..c902f059c7aa 100644 --- a/arch/s390/kernel/setup.c +++ b/arch/s390/kernel/setup.c | |||
@@ -877,31 +877,57 @@ static struct bin_attribute ipl_scp_data_attr = { | |||
877 | 877 | ||
878 | static decl_subsys(ipl, NULL, NULL); | 878 | static decl_subsys(ipl, NULL, NULL); |
879 | 879 | ||
880 | static int ipl_register_fcp_files(void) | ||
881 | { | ||
882 | int rc; | ||
883 | |||
884 | rc = sysfs_create_group(&ipl_subsys.kset.kobj, | ||
885 | &ipl_fcp_attr_group); | ||
886 | if (rc) | ||
887 | goto out; | ||
888 | rc = sysfs_create_bin_file(&ipl_subsys.kset.kobj, | ||
889 | &ipl_parameter_attr); | ||
890 | if (rc) | ||
891 | goto out_ipl_parm; | ||
892 | rc = sysfs_create_bin_file(&ipl_subsys.kset.kobj, | ||
893 | &ipl_scp_data_attr); | ||
894 | if (!rc) | ||
895 | goto out; | ||
896 | |||
897 | sysfs_remove_bin_file(&ipl_subsys.kset.kobj, &ipl_parameter_attr); | ||
898 | |||
899 | out_ipl_parm: | ||
900 | sysfs_remove_group(&ipl_subsys.kset.kobj, &ipl_fcp_attr_group); | ||
901 | out: | ||
902 | return rc; | ||
903 | } | ||
904 | |||
880 | static int __init | 905 | static int __init |
881 | ipl_device_sysfs_register(void) { | 906 | ipl_device_sysfs_register(void) { |
882 | int rc; | 907 | int rc; |
883 | 908 | ||
884 | rc = firmware_register(&ipl_subsys); | 909 | rc = firmware_register(&ipl_subsys); |
885 | if (rc) | 910 | if (rc) |
886 | return rc; | 911 | goto out; |
887 | 912 | ||
888 | switch (get_ipl_type()) { | 913 | switch (get_ipl_type()) { |
889 | case ipl_type_ccw: | 914 | case ipl_type_ccw: |
890 | sysfs_create_group(&ipl_subsys.kset.kobj, &ipl_ccw_attr_group); | 915 | rc = sysfs_create_group(&ipl_subsys.kset.kobj, |
916 | &ipl_ccw_attr_group); | ||
891 | break; | 917 | break; |
892 | case ipl_type_fcp: | 918 | case ipl_type_fcp: |
893 | sysfs_create_group(&ipl_subsys.kset.kobj, &ipl_fcp_attr_group); | 919 | rc = ipl_register_fcp_files(); |
894 | sysfs_create_bin_file(&ipl_subsys.kset.kobj, | ||
895 | &ipl_parameter_attr); | ||
896 | sysfs_create_bin_file(&ipl_subsys.kset.kobj, | ||
897 | &ipl_scp_data_attr); | ||
898 | break; | 920 | break; |
899 | default: | 921 | default: |
900 | sysfs_create_group(&ipl_subsys.kset.kobj, | 922 | rc = sysfs_create_group(&ipl_subsys.kset.kobj, |
901 | &ipl_unknown_attr_group); | 923 | &ipl_unknown_attr_group); |
902 | break; | 924 | break; |
903 | } | 925 | } |
904 | return 0; | 926 | |
927 | if (rc) | ||
928 | firmware_unregister(&ipl_subsys); | ||
929 | out: | ||
930 | return rc; | ||
905 | } | 931 | } |
906 | 932 | ||
907 | __initcall(ipl_device_sysfs_register); | 933 | __initcall(ipl_device_sysfs_register); |
diff --git a/arch/s390/kernel/time.c b/arch/s390/kernel/time.c index f7fe9bc43397..74e6178fbaf2 100644 --- a/arch/s390/kernel/time.c +++ b/arch/s390/kernel/time.c | |||
@@ -379,7 +379,7 @@ void __init time_init(void) | |||
379 | -xtime.tv_sec, -xtime.tv_nsec); | 379 | -xtime.tv_sec, -xtime.tv_nsec); |
380 | 380 | ||
381 | /* request the clock comparator external interrupt */ | 381 | /* request the clock comparator external interrupt */ |
382 | if (register_early_external_interrupt(0x1004, 0, | 382 | if (register_early_external_interrupt(0x1004, NULL, |
383 | &ext_int_info_cc) != 0) | 383 | &ext_int_info_cc) != 0) |
384 | panic("Couldn't request external interrupt 0x1004"); | 384 | panic("Couldn't request external interrupt 0x1004"); |
385 | 385 | ||
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c index 12240c03a6dd..bde1d1d59858 100644 --- a/arch/s390/kernel/traps.c +++ b/arch/s390/kernel/traps.c | |||
@@ -170,7 +170,7 @@ void show_stack(struct task_struct *task, unsigned long *sp) | |||
170 | */ | 170 | */ |
171 | void dump_stack(void) | 171 | void dump_stack(void) |
172 | { | 172 | { |
173 | show_stack(0, 0); | 173 | show_stack(NULL, NULL); |
174 | } | 174 | } |
175 | 175 | ||
176 | EXPORT_SYMBOL(dump_stack); | 176 | EXPORT_SYMBOL(dump_stack); |
@@ -331,9 +331,9 @@ static void inline do_trap(long interruption_code, int signr, char *str, | |||
331 | } | 331 | } |
332 | } | 332 | } |
333 | 333 | ||
334 | static inline void *get_check_address(struct pt_regs *regs) | 334 | static inline void __user *get_check_address(struct pt_regs *regs) |
335 | { | 335 | { |
336 | return (void *)((regs->psw.addr-S390_lowcore.pgm_ilc) & PSW_ADDR_INSN); | 336 | return (void __user *)((regs->psw.addr-S390_lowcore.pgm_ilc) & PSW_ADDR_INSN); |
337 | } | 337 | } |
338 | 338 | ||
339 | void do_single_step(struct pt_regs *regs) | 339 | void do_single_step(struct pt_regs *regs) |
@@ -360,7 +360,7 @@ asmlinkage void name(struct pt_regs * regs, long interruption_code) \ | |||
360 | info.si_signo = signr; \ | 360 | info.si_signo = signr; \ |
361 | info.si_errno = 0; \ | 361 | info.si_errno = 0; \ |
362 | info.si_code = sicode; \ | 362 | info.si_code = sicode; \ |
363 | info.si_addr = (void *)siaddr; \ | 363 | info.si_addr = siaddr; \ |
364 | do_trap(interruption_code, signr, str, regs, &info); \ | 364 | do_trap(interruption_code, signr, str, regs, &info); \ |
365 | } | 365 | } |
366 | 366 | ||
@@ -392,7 +392,7 @@ DO_ERROR_INFO(SIGILL, "translation exception", translation_exception, | |||
392 | ILL_ILLOPN, get_check_address(regs)) | 392 | ILL_ILLOPN, get_check_address(regs)) |
393 | 393 | ||
394 | static inline void | 394 | static inline void |
395 | do_fp_trap(struct pt_regs *regs, void *location, | 395 | do_fp_trap(struct pt_regs *regs, void __user *location, |
396 | int fpc, long interruption_code) | 396 | int fpc, long interruption_code) |
397 | { | 397 | { |
398 | siginfo_t si; | 398 | siginfo_t si; |
@@ -424,10 +424,10 @@ asmlinkage void illegal_op(struct pt_regs * regs, long interruption_code) | |||
424 | { | 424 | { |
425 | siginfo_t info; | 425 | siginfo_t info; |
426 | __u8 opcode[6]; | 426 | __u8 opcode[6]; |
427 | __u16 *location; | 427 | __u16 __user *location; |
428 | int signal = 0; | 428 | int signal = 0; |
429 | 429 | ||
430 | location = (__u16 *) get_check_address(regs); | 430 | location = get_check_address(regs); |
431 | 431 | ||
432 | /* | 432 | /* |
433 | * We got all needed information from the lowcore and can | 433 | * We got all needed information from the lowcore and can |
@@ -559,10 +559,10 @@ DO_ERROR_INFO(SIGILL, "specification exception", specification_exception, | |||
559 | 559 | ||
560 | asmlinkage void data_exception(struct pt_regs * regs, long interruption_code) | 560 | asmlinkage void data_exception(struct pt_regs * regs, long interruption_code) |
561 | { | 561 | { |
562 | __u16 *location; | 562 | __u16 __user *location; |
563 | int signal = 0; | 563 | int signal = 0; |
564 | 564 | ||
565 | location = (__u16 *) get_check_address(regs); | 565 | location = get_check_address(regs); |
566 | 566 | ||
567 | /* | 567 | /* |
568 | * We got all needed information from the lowcore and can | 568 | * We got all needed information from the lowcore and can |
diff --git a/arch/s390/lib/string.c b/arch/s390/lib/string.c index 8240cc77e06e..ae5cf5d03d41 100644 --- a/arch/s390/lib/string.c +++ b/arch/s390/lib/string.c | |||
@@ -233,7 +233,7 @@ char * strrchr(const char * s, int c) | |||
233 | if (s[len] == (char) c) | 233 | if (s[len] == (char) c) |
234 | return (char *) s + len; | 234 | return (char *) s + len; |
235 | } while (--len > 0); | 235 | } while (--len > 0); |
236 | return 0; | 236 | return NULL; |
237 | } | 237 | } |
238 | EXPORT_SYMBOL(strrchr); | 238 | EXPORT_SYMBOL(strrchr); |
239 | 239 | ||
@@ -267,7 +267,7 @@ char * strstr(const char * s1,const char * s2) | |||
267 | return (char *) s1; | 267 | return (char *) s1; |
268 | s1++; | 268 | s1++; |
269 | } | 269 | } |
270 | return 0; | 270 | return NULL; |
271 | } | 271 | } |
272 | EXPORT_SYMBOL(strstr); | 272 | EXPORT_SYMBOL(strstr); |
273 | 273 | ||
diff --git a/arch/s390/lib/uaccess.S b/arch/s390/lib/uaccess.S index 5d59e2625048..837275284d9f 100644 --- a/arch/s390/lib/uaccess.S +++ b/arch/s390/lib/uaccess.S | |||
@@ -88,30 +88,31 @@ __copy_to_user_asm: | |||
88 | .globl __copy_in_user_asm | 88 | .globl __copy_in_user_asm |
89 | # %r2 = from, %r3 = n, %r4 = to | 89 | # %r2 = from, %r3 = n, %r4 = to |
90 | __copy_in_user_asm: | 90 | __copy_in_user_asm: |
91 | ahi %r3,-1 | ||
92 | jo 6f | ||
91 | sacf 256 | 93 | sacf 256 |
92 | bras 1,1f | 94 | bras %r1,4f |
93 | mvc 0(1,%r4),0(%r2) | 95 | 0: ahi %r3,257 |
94 | 0: mvc 0(256,%r4),0(%r2) | 96 | 1: mvc 0(1,%r4),0(%r2) |
95 | la %r2,256(%r2) | ||
96 | la %r4,256(%r4) | ||
97 | 1: ahi %r3,-256 | ||
98 | jnm 0b | ||
99 | 2: ex %r3,0(%r1) | ||
100 | sacf 0 | ||
101 | slr %r2,%r2 | ||
102 | br 14 | ||
103 | 3: mvc 0(1,%r4),0(%r2) | ||
104 | la %r2,1(%r2) | 97 | la %r2,1(%r2) |
105 | la %r4,1(%r4) | 98 | la %r4,1(%r4) |
106 | ahi %r3,-1 | 99 | ahi %r3,-1 |
100 | jnz 1b | ||
101 | 2: lr %r2,%r3 | ||
102 | br %r14 | ||
103 | 3: mvc 0(256,%r4),0(%r2) | ||
104 | la %r2,256(%r2) | ||
105 | la %r4,256(%r4) | ||
106 | 4: ahi %r3,-256 | ||
107 | jnm 3b | 107 | jnm 3b |
108 | 4: lr %r2,%r3 | 108 | 5: ex %r3,4(%r1) |
109 | sacf 0 | 109 | sacf 0 |
110 | 6: slr %r2,%r2 | ||
110 | br %r14 | 111 | br %r14 |
111 | .section __ex_table,"a" | 112 | .section __ex_table,"a" |
112 | .long 0b,3b | 113 | .long 1b,2b |
113 | .long 2b,3b | 114 | .long 3b,0b |
114 | .long 3b,4b | 115 | .long 5b,0b |
115 | .previous | 116 | .previous |
116 | 117 | ||
117 | .align 4 | 118 | .align 4 |
diff --git a/arch/s390/lib/uaccess64.S b/arch/s390/lib/uaccess64.S index 19b41a33c230..1f755be22f92 100644 --- a/arch/s390/lib/uaccess64.S +++ b/arch/s390/lib/uaccess64.S | |||
@@ -88,30 +88,31 @@ __copy_to_user_asm: | |||
88 | .globl __copy_in_user_asm | 88 | .globl __copy_in_user_asm |
89 | # %r2 = from, %r3 = n, %r4 = to | 89 | # %r2 = from, %r3 = n, %r4 = to |
90 | __copy_in_user_asm: | 90 | __copy_in_user_asm: |
91 | aghi %r3,-1 | ||
92 | jo 6f | ||
91 | sacf 256 | 93 | sacf 256 |
92 | bras 1,1f | 94 | bras %r1,4f |
93 | mvc 0(1,%r4),0(%r2) | 95 | 0: aghi %r3,257 |
94 | 0: mvc 0(256,%r4),0(%r2) | 96 | 1: mvc 0(1,%r4),0(%r2) |
95 | la %r2,256(%r2) | ||
96 | la %r4,256(%r4) | ||
97 | 1: aghi %r3,-256 | ||
98 | jnm 0b | ||
99 | 2: ex %r3,0(%r1) | ||
100 | sacf 0 | ||
101 | slgr %r2,%r2 | ||
102 | br 14 | ||
103 | 3: mvc 0(1,%r4),0(%r2) | ||
104 | la %r2,1(%r2) | 97 | la %r2,1(%r2) |
105 | la %r4,1(%r4) | 98 | la %r4,1(%r4) |
106 | aghi %r3,-1 | 99 | aghi %r3,-1 |
100 | jnz 1b | ||
101 | 2: lgr %r2,%r3 | ||
102 | br %r14 | ||
103 | 3: mvc 0(256,%r4),0(%r2) | ||
104 | la %r2,256(%r2) | ||
105 | la %r4,256(%r4) | ||
106 | 4: aghi %r3,-256 | ||
107 | jnm 3b | 107 | jnm 3b |
108 | 4: lgr %r2,%r3 | 108 | 5: ex %r3,4(%r1) |
109 | sacf 0 | 109 | sacf 0 |
110 | br %r14 | 110 | 6: slgr %r2,%r2 |
111 | br 14 | ||
111 | .section __ex_table,"a" | 112 | .section __ex_table,"a" |
112 | .quad 0b,3b | 113 | .quad 1b,2b |
113 | .quad 2b,3b | 114 | .quad 3b,0b |
114 | .quad 3b,4b | 115 | .quad 5b,0b |
115 | .previous | 116 | .previous |
116 | 117 | ||
117 | .align 4 | 118 | .align 4 |
diff --git a/arch/s390/mm/cmm.c b/arch/s390/mm/cmm.c index 81be2fec7dc5..ceea51cff03b 100644 --- a/arch/s390/mm/cmm.c +++ b/arch/s390/mm/cmm.c | |||
@@ -161,7 +161,7 @@ cmm_thread(void *dummy) | |||
161 | static void | 161 | static void |
162 | cmm_start_thread(void) | 162 | cmm_start_thread(void) |
163 | { | 163 | { |
164 | kernel_thread(cmm_thread, 0, 0); | 164 | kernel_thread(cmm_thread, NULL, 0); |
165 | } | 165 | } |
166 | 166 | ||
167 | static void | 167 | static void |
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index 833d5941746a..7cd82575813d 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c | |||
@@ -144,7 +144,7 @@ static void do_sigsegv(struct pt_regs *regs, unsigned long error_code, | |||
144 | #endif | 144 | #endif |
145 | si.si_signo = SIGSEGV; | 145 | si.si_signo = SIGSEGV; |
146 | si.si_code = si_code; | 146 | si.si_code = si_code; |
147 | si.si_addr = (void *) address; | 147 | si.si_addr = (void __user *) address; |
148 | force_sig_info(SIGSEGV, &si, current); | 148 | force_sig_info(SIGSEGV, &si, current); |
149 | } | 149 | } |
150 | 150 | ||
diff --git a/arch/s390/mm/init.c b/arch/s390/mm/init.c index eb6ebfef134a..6e6b6de77770 100644 --- a/arch/s390/mm/init.c +++ b/arch/s390/mm/init.c | |||
@@ -129,7 +129,7 @@ void __init paging_init(void) | |||
129 | /* | 129 | /* |
130 | * pg_table is physical at this point | 130 | * pg_table is physical at this point |
131 | */ | 131 | */ |
132 | pg_table = (pte_t *) alloc_bootmem_low_pages(PAGE_SIZE); | 132 | pg_table = (pte_t *) alloc_bootmem_pages(PAGE_SIZE); |
133 | 133 | ||
134 | pg_dir->pgd0 = (_PAGE_TABLE | __pa(pg_table)); | 134 | pg_dir->pgd0 = (_PAGE_TABLE | __pa(pg_table)); |
135 | pg_dir->pgd1 = (_PAGE_TABLE | (__pa(pg_table)+1024)); | 135 | pg_dir->pgd1 = (_PAGE_TABLE | (__pa(pg_table)+1024)); |
@@ -219,7 +219,7 @@ void __init paging_init(void) | |||
219 | continue; | 219 | continue; |
220 | } | 220 | } |
221 | 221 | ||
222 | pm_dir = (pmd_t *) alloc_bootmem_low_pages(PAGE_SIZE*4); | 222 | pm_dir = (pmd_t *) alloc_bootmem_pages(PAGE_SIZE * 4); |
223 | pgd_populate(&init_mm, pg_dir, pm_dir); | 223 | pgd_populate(&init_mm, pg_dir, pm_dir); |
224 | 224 | ||
225 | for (j = 0 ; j < PTRS_PER_PMD ; j++,pm_dir++) { | 225 | for (j = 0 ; j < PTRS_PER_PMD ; j++,pm_dir++) { |
@@ -228,7 +228,7 @@ void __init paging_init(void) | |||
228 | continue; | 228 | continue; |
229 | } | 229 | } |
230 | 230 | ||
231 | pt_dir = (pte_t *) alloc_bootmem_low_pages(PAGE_SIZE); | 231 | pt_dir = (pte_t *) alloc_bootmem_pages(PAGE_SIZE); |
232 | pmd_populate_kernel(&init_mm, pm_dir, pt_dir); | 232 | pmd_populate_kernel(&init_mm, pm_dir, pt_dir); |
233 | 233 | ||
234 | for (k = 0 ; k < PTRS_PER_PTE ; k++,pt_dir++) { | 234 | for (k = 0 ; k < PTRS_PER_PTE ; k++,pt_dir++) { |