From 3a1103703538d164551dc9b5a734a2c8ebcd27ee Mon Sep 17 00:00:00 2001 From: Heiko Carstens Date: Fri, 13 Aug 2010 10:06:39 +0200 Subject: [S390] sys_personality: follow u_long to unsigned int conversion commit 485d527686850d68a0e9006dd9904f19f122485e "sys_personality: change sys_personality() to accept "unsigned int" instead of u_long" changed the syscall interface for sys_personality. Just follow the common code change in our arch code to avoid confusion. Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky --- arch/s390/kernel/compat_wrapper.S | 2 +- arch/s390/kernel/entry.h | 2 +- arch/s390/kernel/sys_s390.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) (limited to 'arch') diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S index 672ce52341b4..1600f5097148 100644 --- a/arch/s390/kernel/compat_wrapper.S +++ b/arch/s390/kernel/compat_wrapper.S @@ -614,7 +614,7 @@ sys32_sysfs_wrapper: .globl sys32_personality_wrapper sys32_personality_wrapper: - llgfr %r2,%r2 # unsigned long + llgfr %r2,%r2 # unsigned int jg sys_s390_personality # branch to system call .globl sys32_setfsuid16_wrapper diff --git a/arch/s390/kernel/entry.h b/arch/s390/kernel/entry.h index eb15c12ec158..5bb1e6b5db26 100644 --- a/arch/s390/kernel/entry.h +++ b/arch/s390/kernel/entry.h @@ -31,7 +31,7 @@ struct old_sigaction; long sys_mmap2(struct s390_mmap_arg_struct __user *arg); long sys_s390_ipc(uint call, int first, unsigned long second, unsigned long third, void __user *ptr); -long sys_s390_personality(unsigned long personality); +long sys_s390_personality(unsigned int personality); long sys_s390_fadvise64(int fd, u32 offset_high, u32 offset_low, size_t len, int advice); long sys_s390_fadvise64_64(struct fadvise64_64_args __user *args); diff --git a/arch/s390/kernel/sys_s390.c b/arch/s390/kernel/sys_s390.c index 7b6b0f81a283..476081440df9 100644 --- a/arch/s390/kernel/sys_s390.c +++ b/arch/s390/kernel/sys_s390.c @@ -131,9 +131,9 @@ SYSCALL_DEFINE5(s390_ipc, uint, call, int, first, unsigned long, second, } #ifdef CONFIG_64BIT -SYSCALL_DEFINE1(s390_personality, unsigned long, personality) +SYSCALL_DEFINE1(s390_personality, unsigned int, personality) { - int ret; + unsigned int ret; if (current->personality == PER_LINUX32 && personality == PER_LINUX) personality = PER_LINUX32; -- cgit v1.2.3 From b47ac63c7229dd13daf4d7eed806d720f769c526 Mon Sep 17 00:00:00 2001 From: Heiko Carstens Date: Fri, 13 Aug 2010 10:06:41 +0200 Subject: [S390] wire up prlimit64 and fanotify* syscalls Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky --- arch/s390/include/asm/unistd.h | 5 ++++- arch/s390/kernel/compat_wrapper.S | 24 ++++++++++++++++++++++++ arch/s390/kernel/syscalls.S | 3 +++ 3 files changed, 31 insertions(+), 1 deletion(-) (limited to 'arch') diff --git a/arch/s390/include/asm/unistd.h b/arch/s390/include/asm/unistd.h index 5f0075150a65..1049ef27c15e 100644 --- a/arch/s390/include/asm/unistd.h +++ b/arch/s390/include/asm/unistd.h @@ -269,7 +269,10 @@ #define __NR_pwritev 329 #define __NR_rt_tgsigqueueinfo 330 #define __NR_perf_event_open 331 -#define NR_syscalls 332 +#define __NR_fanotify_init 332 +#define __NR_fanotify_mark 333 +#define __NR_prlimit64 334 +#define NR_syscalls 335 /* * There are some system calls that are not present on 64 bit, some diff --git a/arch/s390/kernel/compat_wrapper.S b/arch/s390/kernel/compat_wrapper.S index 1600f5097148..8e60fb23b90d 100644 --- a/arch/s390/kernel/compat_wrapper.S +++ b/arch/s390/kernel/compat_wrapper.S @@ -1853,3 +1853,27 @@ sys32_execve_wrapper: llgtr %r3,%r3 # compat_uptr_t * llgtr %r4,%r4 # compat_uptr_t * jg sys32_execve # branch to system call + + .globl sys_fanotify_init_wrapper +sys_fanotify_init_wrapper: + llgfr %r2,%r2 # unsigned int + llgfr %r3,%r3 # unsigned int + jg sys_fanotify_init # branch to system call + + .globl sys_fanotify_mark_wrapper +sys_fanotify_mark_wrapper: + lgfr %r2,%r2 # int + llgfr %r3,%r3 # unsigned int + sllg %r4,%r4,32 # get high word of 64bit mask + lr %r4,%r5 # get low word of 64bit mask + llgfr %r5,%r6 # unsigned int + llgt %r6,164(%r15) # char * + jg sys_fanotify_mark # branch to system call + + .globl sys_prlimit64_wrapper +sys_prlimit64_wrapper: + lgfr %r2,%r2 # pid_t + llgfr %r3,%r3 # unsigned int + llgtr %r4,%r4 # const struct rlimit64 __user * + llgtr %r5,%r5 # struct rlimit64 __user * + jg sys_prlimit64 # branch to system call diff --git a/arch/s390/kernel/syscalls.S b/arch/s390/kernel/syscalls.S index 201ce6bed34e..a8fee1b14395 100644 --- a/arch/s390/kernel/syscalls.S +++ b/arch/s390/kernel/syscalls.S @@ -340,3 +340,6 @@ SYSCALL(sys_preadv,sys_preadv,compat_sys_preadv_wrapper) SYSCALL(sys_pwritev,sys_pwritev,compat_sys_pwritev_wrapper) SYSCALL(sys_rt_tgsigqueueinfo,sys_rt_tgsigqueueinfo,compat_sys_rt_tgsigqueueinfo_wrapper) /* 330 */ SYSCALL(sys_perf_event_open,sys_perf_event_open,sys_perf_event_open_wrapper) +SYSCALL(sys_fanotify_init,sys_fanotify_init,sys_fanotify_init_wrapper) +SYSCALL(sys_fanotify_mark,sys_fanotify_mark,sys_fanotify_mark_wrapper) +SYSCALL(sys_prlimit64,sys_prlimit64,sys_prlimit64_wrapper) -- cgit v1.2.3 From e402e38c6b148febf8c3c39546e24584eaa23e42 Mon Sep 17 00:00:00 2001 From: Heiko Carstens Date: Fri, 13 Aug 2010 10:06:42 +0200 Subject: [S390] appldata: fix dev_get_stats 64 bit conversion Fix this warning: arch/s390/appldata/appldata_net_sum.c: In function 'appldata_get_net_sum_data': arch/s390/appldata/appldata_net_sum.c:89: warning: initialization from incompatible pointer type which was introduced with be1f3c2c027cc5ad735df6a45a542ed1db7ec48b "net: Enable 64-bit net device statistics on 32-bit architectures" Signed-off-by: Heiko Carstens Signed-off-by: Martin Schwidefsky --- arch/s390/appldata/appldata_net_sum.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'arch') diff --git a/arch/s390/appldata/appldata_net_sum.c b/arch/s390/appldata/appldata_net_sum.c index f02e89ce4df1..5da7c562a90b 100644 --- a/arch/s390/appldata/appldata_net_sum.c +++ b/arch/s390/appldata/appldata_net_sum.c @@ -85,9 +85,10 @@ static void appldata_get_net_sum_data(void *data) rcu_read_lock(); for_each_netdev_rcu(&init_net, dev) { + const struct rtnl_link_stats64 *stats; struct rtnl_link_stats64 temp; - const struct net_device_stats *stats = dev_get_stats(dev, &temp); + stats = dev_get_stats(dev, &temp); rx_packets += stats->rx_packets; tx_packets += stats->tx_packets; rx_bytes += stats->rx_bytes; -- cgit v1.2.3