diff options
Diffstat (limited to 'fs/compat_ioctl.c')
-rw-r--r-- | fs/compat_ioctl.c | 120 |
1 files changed, 8 insertions, 112 deletions
diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c index 97dba0d92348..7b3a03c7c6a9 100644 --- a/fs/compat_ioctl.c +++ b/fs/compat_ioctl.c | |||
@@ -58,7 +58,6 @@ | |||
58 | #include <linux/syscalls.h> | 58 | #include <linux/syscalls.h> |
59 | #include <linux/i2c.h> | 59 | #include <linux/i2c.h> |
60 | #include <linux/i2c-dev.h> | 60 | #include <linux/i2c-dev.h> |
61 | #include <linux/wireless.h> | ||
62 | #include <linux/atalk.h> | 61 | #include <linux/atalk.h> |
63 | #include <linux/loop.h> | 62 | #include <linux/loop.h> |
64 | 63 | ||
@@ -69,9 +68,11 @@ | |||
69 | #include <linux/capi.h> | 68 | #include <linux/capi.h> |
70 | #include <linux/gigaset_dev.h> | 69 | #include <linux/gigaset_dev.h> |
71 | 70 | ||
71 | #ifdef CONFIG_BLOCK | ||
72 | #include <scsi/scsi.h> | 72 | #include <scsi/scsi.h> |
73 | #include <scsi/scsi_ioctl.h> | 73 | #include <scsi/scsi_ioctl.h> |
74 | #include <scsi/sg.h> | 74 | #include <scsi/sg.h> |
75 | #endif | ||
75 | 76 | ||
76 | #include <asm/uaccess.h> | 77 | #include <asm/uaccess.h> |
77 | #include <linux/ethtool.h> | 78 | #include <linux/ethtool.h> |
@@ -1757,64 +1758,6 @@ static int do_i2c_smbus_ioctl(unsigned int fd, unsigned int cmd, unsigned long a | |||
1757 | return sys_ioctl(fd, cmd, (unsigned long)tdata); | 1758 | return sys_ioctl(fd, cmd, (unsigned long)tdata); |
1758 | } | 1759 | } |
1759 | 1760 | ||
1760 | struct compat_iw_point { | ||
1761 | compat_caddr_t pointer; | ||
1762 | __u16 length; | ||
1763 | __u16 flags; | ||
1764 | }; | ||
1765 | |||
1766 | static int do_wireless_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg) | ||
1767 | { | ||
1768 | struct iwreq __user *iwr; | ||
1769 | struct iwreq __user *iwr_u; | ||
1770 | struct iw_point __user *iwp; | ||
1771 | struct compat_iw_point __user *iwp_u; | ||
1772 | compat_caddr_t pointer_u; | ||
1773 | void __user *pointer; | ||
1774 | __u16 length, flags; | ||
1775 | int ret; | ||
1776 | |||
1777 | iwr_u = compat_ptr(arg); | ||
1778 | iwp_u = (struct compat_iw_point __user *) &iwr_u->u.data; | ||
1779 | iwr = compat_alloc_user_space(sizeof(*iwr)); | ||
1780 | if (iwr == NULL) | ||
1781 | return -ENOMEM; | ||
1782 | |||
1783 | iwp = &iwr->u.data; | ||
1784 | |||
1785 | if (!access_ok(VERIFY_WRITE, iwr, sizeof(*iwr))) | ||
1786 | return -EFAULT; | ||
1787 | |||
1788 | if (__copy_in_user(&iwr->ifr_ifrn.ifrn_name[0], | ||
1789 | &iwr_u->ifr_ifrn.ifrn_name[0], | ||
1790 | sizeof(iwr->ifr_ifrn.ifrn_name))) | ||
1791 | return -EFAULT; | ||
1792 | |||
1793 | if (__get_user(pointer_u, &iwp_u->pointer) || | ||
1794 | __get_user(length, &iwp_u->length) || | ||
1795 | __get_user(flags, &iwp_u->flags)) | ||
1796 | return -EFAULT; | ||
1797 | |||
1798 | if (__put_user(compat_ptr(pointer_u), &iwp->pointer) || | ||
1799 | __put_user(length, &iwp->length) || | ||
1800 | __put_user(flags, &iwp->flags)) | ||
1801 | return -EFAULT; | ||
1802 | |||
1803 | ret = sys_ioctl(fd, cmd, (unsigned long) iwr); | ||
1804 | |||
1805 | if (__get_user(pointer, &iwp->pointer) || | ||
1806 | __get_user(length, &iwp->length) || | ||
1807 | __get_user(flags, &iwp->flags)) | ||
1808 | return -EFAULT; | ||
1809 | |||
1810 | if (__put_user(ptr_to_compat(pointer), &iwp_u->pointer) || | ||
1811 | __put_user(length, &iwp_u->length) || | ||
1812 | __put_user(flags, &iwp_u->flags)) | ||
1813 | return -EFAULT; | ||
1814 | |||
1815 | return ret; | ||
1816 | } | ||
1817 | |||
1818 | /* Since old style bridge ioctl's endup using SIOCDEVPRIVATE | 1761 | /* Since old style bridge ioctl's endup using SIOCDEVPRIVATE |
1819 | * for some operations; this forces use of the newer bridge-utils that | 1762 | * for some operations; this forces use of the newer bridge-utils that |
1820 | * use compatiable ioctls | 1763 | * use compatiable ioctls |
@@ -2024,6 +1967,7 @@ COMPATIBLE_IOCTL(GIO_UNISCRNMAP) | |||
2024 | COMPATIBLE_IOCTL(PIO_UNISCRNMAP) | 1967 | COMPATIBLE_IOCTL(PIO_UNISCRNMAP) |
2025 | COMPATIBLE_IOCTL(PIO_FONTRESET) | 1968 | COMPATIBLE_IOCTL(PIO_FONTRESET) |
2026 | COMPATIBLE_IOCTL(PIO_UNIMAPCLR) | 1969 | COMPATIBLE_IOCTL(PIO_UNIMAPCLR) |
1970 | #ifdef CONFIG_BLOCK | ||
2027 | /* Big S */ | 1971 | /* Big S */ |
2028 | COMPATIBLE_IOCTL(SCSI_IOCTL_GET_IDLUN) | 1972 | COMPATIBLE_IOCTL(SCSI_IOCTL_GET_IDLUN) |
2029 | COMPATIBLE_IOCTL(SCSI_IOCTL_DOORLOCK) | 1973 | COMPATIBLE_IOCTL(SCSI_IOCTL_DOORLOCK) |
@@ -2033,6 +1977,7 @@ COMPATIBLE_IOCTL(SCSI_IOCTL_GET_BUS_NUMBER) | |||
2033 | COMPATIBLE_IOCTL(SCSI_IOCTL_SEND_COMMAND) | 1977 | COMPATIBLE_IOCTL(SCSI_IOCTL_SEND_COMMAND) |
2034 | COMPATIBLE_IOCTL(SCSI_IOCTL_PROBE_HOST) | 1978 | COMPATIBLE_IOCTL(SCSI_IOCTL_PROBE_HOST) |
2035 | COMPATIBLE_IOCTL(SCSI_IOCTL_GET_PCI) | 1979 | COMPATIBLE_IOCTL(SCSI_IOCTL_GET_PCI) |
1980 | #endif | ||
2036 | /* Big T */ | 1981 | /* Big T */ |
2037 | COMPATIBLE_IOCTL(TUNSETNOCSUM) | 1982 | COMPATIBLE_IOCTL(TUNSETNOCSUM) |
2038 | COMPATIBLE_IOCTL(TUNSETDEBUG) | 1983 | COMPATIBLE_IOCTL(TUNSETDEBUG) |
@@ -2103,6 +2048,7 @@ COMPATIBLE_IOCTL(SIOCGIFVLAN) | |||
2103 | COMPATIBLE_IOCTL(SIOCSIFVLAN) | 2048 | COMPATIBLE_IOCTL(SIOCSIFVLAN) |
2104 | COMPATIBLE_IOCTL(SIOCBRADDBR) | 2049 | COMPATIBLE_IOCTL(SIOCBRADDBR) |
2105 | COMPATIBLE_IOCTL(SIOCBRDELBR) | 2050 | COMPATIBLE_IOCTL(SIOCBRDELBR) |
2051 | #ifdef CONFIG_BLOCK | ||
2106 | /* SG stuff */ | 2052 | /* SG stuff */ |
2107 | COMPATIBLE_IOCTL(SG_SET_TIMEOUT) | 2053 | COMPATIBLE_IOCTL(SG_SET_TIMEOUT) |
2108 | COMPATIBLE_IOCTL(SG_GET_TIMEOUT) | 2054 | COMPATIBLE_IOCTL(SG_GET_TIMEOUT) |
@@ -2127,6 +2073,7 @@ COMPATIBLE_IOCTL(SG_SCSI_RESET) | |||
2127 | COMPATIBLE_IOCTL(SG_GET_REQUEST_TABLE) | 2073 | COMPATIBLE_IOCTL(SG_GET_REQUEST_TABLE) |
2128 | COMPATIBLE_IOCTL(SG_SET_KEEP_ORPHAN) | 2074 | COMPATIBLE_IOCTL(SG_SET_KEEP_ORPHAN) |
2129 | COMPATIBLE_IOCTL(SG_GET_KEEP_ORPHAN) | 2075 | COMPATIBLE_IOCTL(SG_GET_KEEP_ORPHAN) |
2076 | #endif | ||
2130 | /* PPP stuff */ | 2077 | /* PPP stuff */ |
2131 | COMPATIBLE_IOCTL(PPPIOCGFLAGS) | 2078 | COMPATIBLE_IOCTL(PPPIOCGFLAGS) |
2132 | COMPATIBLE_IOCTL(PPPIOCSFLAGS) | 2079 | COMPATIBLE_IOCTL(PPPIOCSFLAGS) |
@@ -2399,6 +2346,7 @@ COMPATIBLE_IOCTL(HCIGETDEVLIST) | |||
2399 | COMPATIBLE_IOCTL(HCIGETDEVINFO) | 2346 | COMPATIBLE_IOCTL(HCIGETDEVINFO) |
2400 | COMPATIBLE_IOCTL(HCIGETCONNLIST) | 2347 | COMPATIBLE_IOCTL(HCIGETCONNLIST) |
2401 | COMPATIBLE_IOCTL(HCIGETCONNINFO) | 2348 | COMPATIBLE_IOCTL(HCIGETCONNINFO) |
2349 | COMPATIBLE_IOCTL(HCIGETAUTHINFO) | ||
2402 | COMPATIBLE_IOCTL(HCISETRAW) | 2350 | COMPATIBLE_IOCTL(HCISETRAW) |
2403 | COMPATIBLE_IOCTL(HCISETSCAN) | 2351 | COMPATIBLE_IOCTL(HCISETSCAN) |
2404 | COMPATIBLE_IOCTL(HCISETAUTH) | 2352 | COMPATIBLE_IOCTL(HCISETAUTH) |
@@ -2495,36 +2443,6 @@ COMPATIBLE_IOCTL(I2C_TENBIT) | |||
2495 | COMPATIBLE_IOCTL(I2C_PEC) | 2443 | COMPATIBLE_IOCTL(I2C_PEC) |
2496 | COMPATIBLE_IOCTL(I2C_RETRIES) | 2444 | COMPATIBLE_IOCTL(I2C_RETRIES) |
2497 | COMPATIBLE_IOCTL(I2C_TIMEOUT) | 2445 | COMPATIBLE_IOCTL(I2C_TIMEOUT) |
2498 | /* wireless */ | ||
2499 | COMPATIBLE_IOCTL(SIOCSIWCOMMIT) | ||
2500 | COMPATIBLE_IOCTL(SIOCGIWNAME) | ||
2501 | COMPATIBLE_IOCTL(SIOCSIWNWID) | ||
2502 | COMPATIBLE_IOCTL(SIOCGIWNWID) | ||
2503 | COMPATIBLE_IOCTL(SIOCSIWFREQ) | ||
2504 | COMPATIBLE_IOCTL(SIOCGIWFREQ) | ||
2505 | COMPATIBLE_IOCTL(SIOCSIWMODE) | ||
2506 | COMPATIBLE_IOCTL(SIOCGIWMODE) | ||
2507 | COMPATIBLE_IOCTL(SIOCSIWSENS) | ||
2508 | COMPATIBLE_IOCTL(SIOCGIWSENS) | ||
2509 | COMPATIBLE_IOCTL(SIOCSIWRANGE) | ||
2510 | COMPATIBLE_IOCTL(SIOCSIWPRIV) | ||
2511 | COMPATIBLE_IOCTL(SIOCSIWSTATS) | ||
2512 | COMPATIBLE_IOCTL(SIOCSIWAP) | ||
2513 | COMPATIBLE_IOCTL(SIOCGIWAP) | ||
2514 | COMPATIBLE_IOCTL(SIOCSIWRATE) | ||
2515 | COMPATIBLE_IOCTL(SIOCGIWRATE) | ||
2516 | COMPATIBLE_IOCTL(SIOCSIWRTS) | ||
2517 | COMPATIBLE_IOCTL(SIOCGIWRTS) | ||
2518 | COMPATIBLE_IOCTL(SIOCSIWFRAG) | ||
2519 | COMPATIBLE_IOCTL(SIOCGIWFRAG) | ||
2520 | COMPATIBLE_IOCTL(SIOCSIWTXPOW) | ||
2521 | COMPATIBLE_IOCTL(SIOCGIWTXPOW) | ||
2522 | COMPATIBLE_IOCTL(SIOCSIWRETRY) | ||
2523 | COMPATIBLE_IOCTL(SIOCGIWRETRY) | ||
2524 | COMPATIBLE_IOCTL(SIOCSIWPOWER) | ||
2525 | COMPATIBLE_IOCTL(SIOCGIWPOWER) | ||
2526 | COMPATIBLE_IOCTL(SIOCSIWAUTH) | ||
2527 | COMPATIBLE_IOCTL(SIOCGIWAUTH) | ||
2528 | /* hiddev */ | 2446 | /* hiddev */ |
2529 | COMPATIBLE_IOCTL(HIDIOCGVERSION) | 2447 | COMPATIBLE_IOCTL(HIDIOCGVERSION) |
2530 | COMPATIBLE_IOCTL(HIDIOCAPPLICATION) | 2448 | COMPATIBLE_IOCTL(HIDIOCAPPLICATION) |
@@ -2755,29 +2673,7 @@ COMPATIBLE_IOCTL(USBDEVFS_IOCTL32) | |||
2755 | HANDLE_IOCTL(I2C_FUNCS, w_long) | 2673 | HANDLE_IOCTL(I2C_FUNCS, w_long) |
2756 | HANDLE_IOCTL(I2C_RDWR, do_i2c_rdwr_ioctl) | 2674 | HANDLE_IOCTL(I2C_RDWR, do_i2c_rdwr_ioctl) |
2757 | HANDLE_IOCTL(I2C_SMBUS, do_i2c_smbus_ioctl) | 2675 | HANDLE_IOCTL(I2C_SMBUS, do_i2c_smbus_ioctl) |
2758 | /* wireless */ | 2676 | /* bridge */ |
2759 | HANDLE_IOCTL(SIOCGIWRANGE, do_wireless_ioctl) | ||
2760 | HANDLE_IOCTL(SIOCGIWPRIV, do_wireless_ioctl) | ||
2761 | HANDLE_IOCTL(SIOCGIWSTATS, do_wireless_ioctl) | ||
2762 | HANDLE_IOCTL(SIOCSIWSPY, do_wireless_ioctl) | ||
2763 | HANDLE_IOCTL(SIOCGIWSPY, do_wireless_ioctl) | ||
2764 | HANDLE_IOCTL(SIOCSIWTHRSPY, do_wireless_ioctl) | ||
2765 | HANDLE_IOCTL(SIOCGIWTHRSPY, do_wireless_ioctl) | ||
2766 | HANDLE_IOCTL(SIOCSIWMLME, do_wireless_ioctl) | ||
2767 | HANDLE_IOCTL(SIOCGIWAPLIST, do_wireless_ioctl) | ||
2768 | HANDLE_IOCTL(SIOCSIWSCAN, do_wireless_ioctl) | ||
2769 | HANDLE_IOCTL(SIOCGIWSCAN, do_wireless_ioctl) | ||
2770 | HANDLE_IOCTL(SIOCSIWESSID, do_wireless_ioctl) | ||
2771 | HANDLE_IOCTL(SIOCGIWESSID, do_wireless_ioctl) | ||
2772 | HANDLE_IOCTL(SIOCSIWNICKN, do_wireless_ioctl) | ||
2773 | HANDLE_IOCTL(SIOCGIWNICKN, do_wireless_ioctl) | ||
2774 | HANDLE_IOCTL(SIOCSIWENCODE, do_wireless_ioctl) | ||
2775 | HANDLE_IOCTL(SIOCGIWENCODE, do_wireless_ioctl) | ||
2776 | HANDLE_IOCTL(SIOCSIWGENIE, do_wireless_ioctl) | ||
2777 | HANDLE_IOCTL(SIOCGIWGENIE, do_wireless_ioctl) | ||
2778 | HANDLE_IOCTL(SIOCSIWENCODEEXT, do_wireless_ioctl) | ||
2779 | HANDLE_IOCTL(SIOCGIWENCODEEXT, do_wireless_ioctl) | ||
2780 | HANDLE_IOCTL(SIOCSIWPMKSA, do_wireless_ioctl) | ||
2781 | HANDLE_IOCTL(SIOCSIFBR, old_bridge_ioctl) | 2677 | HANDLE_IOCTL(SIOCSIFBR, old_bridge_ioctl) |
2782 | HANDLE_IOCTL(SIOCGIFBR, old_bridge_ioctl) | 2678 | HANDLE_IOCTL(SIOCGIFBR, old_bridge_ioctl) |
2783 | /* Not implemented in the native kernel */ | 2679 | /* Not implemented in the native kernel */ |