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, |
