diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-01-14 11:37:53 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-01-14 11:37:53 -0500 |
commit | 61c39bb354a1f791ba6f562b766a72e508a036ee (patch) | |
tree | 1186cd23bc50089c8506b19403220ca46542de2c /arch/s390/kernel/compat_linux.c | |
parent | 4a24eef671614aea479eac6c9ce5fa2cf590ee76 (diff) | |
parent | c5406079780f0f687316732353f49c3357504428 (diff) |
Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6
* 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6:
[S390] tape_char: add missing compat_ptr conversion
[S390] zcrypt: add sanity check before copy_from_user()
[S390] unwire sys_recvmmsg again
[S390] con3215: remove empty ioctl function
[S390] dasd: add proper compat pointer conversion for symmetrix ioctl
[S390] mmap: add missing compat_ptr conversion to both mmap compat syscalls
[S390] bug: implement arch specific __WARN macro
[S390] Move __cpu_logical_map to smp.c
[S390] tape_block: remove ioctl function
[S390] smp: remove volatile type quilifier from __cpu_logical_map
[S390] smp: setup smp_processor_id early
[S390] use helpers for rlimits
[S390] fs3270: add missing compat ptr conversion
[S390] vmcp: add missing compat ptr conversion
[S390] cio: add missing compat ptr conversion
[S390] dasd: add missing compat ptr conversion
[S390] remove superfluous TIF_USEDFPU bit
[S390] duplicate SIGTRAP on signal delivery.
[S390] clear TIF_SINGLE_STEP for new process.
[S390] fix loading of PER control registers for utrace.
Diffstat (limited to 'arch/s390/kernel/compat_linux.c')
-rw-r--r-- | arch/s390/kernel/compat_linux.c | 41 |
1 files changed, 16 insertions, 25 deletions
diff --git a/arch/s390/kernel/compat_linux.c b/arch/s390/kernel/compat_linux.c index 22c9e557bb22..11c3aba664ea 100644 --- a/arch/s390/kernel/compat_linux.c +++ b/arch/s390/kernel/compat_linux.c | |||
@@ -616,44 +616,35 @@ asmlinkage long sys32_fstatat64(unsigned int dfd, char __user *filename, | |||
616 | */ | 616 | */ |
617 | 617 | ||
618 | struct mmap_arg_struct_emu31 { | 618 | struct mmap_arg_struct_emu31 { |
619 | u32 addr; | 619 | compat_ulong_t addr; |
620 | u32 len; | 620 | compat_ulong_t len; |
621 | u32 prot; | 621 | compat_ulong_t prot; |
622 | u32 flags; | 622 | compat_ulong_t flags; |
623 | u32 fd; | 623 | compat_ulong_t fd; |
624 | u32 offset; | 624 | compat_ulong_t offset; |
625 | }; | 625 | }; |
626 | 626 | ||
627 | asmlinkage unsigned long | 627 | asmlinkage unsigned long old32_mmap(struct mmap_arg_struct_emu31 __user *arg) |
628 | old32_mmap(struct mmap_arg_struct_emu31 __user *arg) | ||
629 | { | 628 | { |
630 | struct mmap_arg_struct_emu31 a; | 629 | struct mmap_arg_struct_emu31 a; |
631 | int error = -EFAULT; | ||
632 | 630 | ||
633 | if (copy_from_user(&a, arg, sizeof(a))) | 631 | if (copy_from_user(&a, arg, sizeof(a))) |
634 | goto out; | 632 | return -EFAULT; |
635 | |||
636 | error = -EINVAL; | ||
637 | if (a.offset & ~PAGE_MASK) | 633 | if (a.offset & ~PAGE_MASK) |
638 | goto out; | 634 | return -EINVAL; |
639 | 635 | a.addr = (unsigned long) compat_ptr(a.addr); | |
640 | error = sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, | 636 | return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, |
641 | a.offset >> PAGE_SHIFT); | 637 | a.offset >> PAGE_SHIFT); |
642 | out: | ||
643 | return error; | ||
644 | } | 638 | } |
645 | 639 | ||
646 | asmlinkage long | 640 | asmlinkage long sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg) |
647 | sys32_mmap2(struct mmap_arg_struct_emu31 __user *arg) | ||
648 | { | 641 | { |
649 | struct mmap_arg_struct_emu31 a; | 642 | struct mmap_arg_struct_emu31 a; |
650 | int error = -EFAULT; | ||
651 | 643 | ||
652 | if (copy_from_user(&a, arg, sizeof(a))) | 644 | if (copy_from_user(&a, arg, sizeof(a))) |
653 | goto out; | 645 | return -EFAULT; |
654 | error = sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset); | 646 | a.addr = (unsigned long) compat_ptr(a.addr); |
655 | out: | 647 | return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd, a.offset); |
656 | return error; | ||
657 | } | 648 | } |
658 | 649 | ||
659 | asmlinkage long sys32_read(unsigned int fd, char __user * buf, size_t count) | 650 | asmlinkage long sys32_read(unsigned int fd, char __user * buf, size_t count) |