diff options
Diffstat (limited to 'fs/compat.c')
-rw-r--r-- | fs/compat.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/fs/compat.c b/fs/compat.c index 00d90c2e66f0..4b6ed03cc478 100644 --- a/fs/compat.c +++ b/fs/compat.c | |||
@@ -49,6 +49,7 @@ | |||
49 | #include <linux/mm.h> | 49 | #include <linux/mm.h> |
50 | #include <linux/eventpoll.h> | 50 | #include <linux/eventpoll.h> |
51 | #include <linux/fs_struct.h> | 51 | #include <linux/fs_struct.h> |
52 | #include <linux/slab.h> | ||
52 | 53 | ||
53 | #include <asm/uaccess.h> | 54 | #include <asm/uaccess.h> |
54 | #include <asm/mmu_context.h> | 55 | #include <asm/mmu_context.h> |
@@ -1795,6 +1796,24 @@ asmlinkage long compat_sys_select(int n, compat_ulong_t __user *inp, | |||
1795 | return ret; | 1796 | return ret; |
1796 | } | 1797 | } |
1797 | 1798 | ||
1799 | struct compat_sel_arg_struct { | ||
1800 | compat_ulong_t n; | ||
1801 | compat_uptr_t inp; | ||
1802 | compat_uptr_t outp; | ||
1803 | compat_uptr_t exp; | ||
1804 | compat_uptr_t tvp; | ||
1805 | }; | ||
1806 | |||
1807 | asmlinkage long compat_sys_old_select(struct compat_sel_arg_struct __user *arg) | ||
1808 | { | ||
1809 | struct compat_sel_arg_struct a; | ||
1810 | |||
1811 | if (copy_from_user(&a, arg, sizeof(a))) | ||
1812 | return -EFAULT; | ||
1813 | return compat_sys_select(a.n, compat_ptr(a.inp), compat_ptr(a.outp), | ||
1814 | compat_ptr(a.exp), compat_ptr(a.tvp)); | ||
1815 | } | ||
1816 | |||
1798 | #ifdef HAVE_SET_RESTORE_SIGMASK | 1817 | #ifdef HAVE_SET_RESTORE_SIGMASK |
1799 | static long do_compat_pselect(int n, compat_ulong_t __user *inp, | 1818 | static long do_compat_pselect(int n, compat_ulong_t __user *inp, |
1800 | compat_ulong_t __user *outp, compat_ulong_t __user *exp, | 1819 | compat_ulong_t __user *outp, compat_ulong_t __user *exp, |