diff options
Diffstat (limited to 'fs/compat.c')
-rw-r--r-- | fs/compat.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/fs/compat.c b/fs/compat.c index 6c19040ffeef..05448730f840 100644 --- a/fs/compat.c +++ b/fs/compat.c | |||
@@ -38,8 +38,6 @@ | |||
38 | #include <linux/dirent.h> | 38 | #include <linux/dirent.h> |
39 | #include <linux/fsnotify.h> | 39 | #include <linux/fsnotify.h> |
40 | #include <linux/highuid.h> | 40 | #include <linux/highuid.h> |
41 | #include <linux/sunrpc/svc.h> | ||
42 | #include <linux/nfsd/nfsd.h> | ||
43 | #include <linux/nfsd/syscall.h> | 41 | #include <linux/nfsd/syscall.h> |
44 | #include <linux/personality.h> | 42 | #include <linux/personality.h> |
45 | #include <linux/rwsem.h> | 43 | #include <linux/rwsem.h> |
@@ -51,6 +49,7 @@ | |||
51 | #include <linux/mm.h> | 49 | #include <linux/mm.h> |
52 | #include <linux/eventpoll.h> | 50 | #include <linux/eventpoll.h> |
53 | #include <linux/fs_struct.h> | 51 | #include <linux/fs_struct.h> |
52 | #include <linux/slab.h> | ||
54 | 53 | ||
55 | #include <asm/uaccess.h> | 54 | #include <asm/uaccess.h> |
56 | #include <asm/mmu_context.h> | 55 | #include <asm/mmu_context.h> |
@@ -1532,8 +1531,6 @@ int compat_do_execve(char * filename, | |||
1532 | if (retval < 0) | 1531 | if (retval < 0) |
1533 | goto out; | 1532 | goto out; |
1534 | 1533 | ||
1535 | current->stack_start = current->mm->start_stack; | ||
1536 | |||
1537 | /* execve succeeded */ | 1534 | /* execve succeeded */ |
1538 | current->fs->in_exec = 0; | 1535 | current->fs->in_exec = 0; |
1539 | current->in_execve = 0; | 1536 | current->in_execve = 0; |
@@ -1797,6 +1794,24 @@ asmlinkage long compat_sys_select(int n, compat_ulong_t __user *inp, | |||
1797 | return ret; | 1794 | return ret; |
1798 | } | 1795 | } |
1799 | 1796 | ||
1797 | struct compat_sel_arg_struct { | ||
1798 | compat_ulong_t n; | ||
1799 | compat_uptr_t inp; | ||
1800 | compat_uptr_t outp; | ||
1801 | compat_uptr_t exp; | ||
1802 | compat_uptr_t tvp; | ||
1803 | }; | ||
1804 | |||
1805 | asmlinkage long compat_sys_old_select(struct compat_sel_arg_struct __user *arg) | ||
1806 | { | ||
1807 | struct compat_sel_arg_struct a; | ||
1808 | |||
1809 | if (copy_from_user(&a, arg, sizeof(a))) | ||
1810 | return -EFAULT; | ||
1811 | return compat_sys_select(a.n, compat_ptr(a.inp), compat_ptr(a.outp), | ||
1812 | compat_ptr(a.exp), compat_ptr(a.tvp)); | ||
1813 | } | ||
1814 | |||
1800 | #ifdef HAVE_SET_RESTORE_SIGMASK | 1815 | #ifdef HAVE_SET_RESTORE_SIGMASK |
1801 | static long do_compat_pselect(int n, compat_ulong_t __user *inp, | 1816 | static long do_compat_pselect(int n, compat_ulong_t __user *inp, |
1802 | compat_ulong_t __user *outp, compat_ulong_t __user *exp, | 1817 | compat_ulong_t __user *outp, compat_ulong_t __user *exp, |