aboutsummaryrefslogtreecommitdiffstats
path: root/fs/compat_ioctl.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/compat_ioctl.c')
-rw-r--r--fs/compat_ioctl.c51
1 files changed, 10 insertions, 41 deletions
diff --git a/fs/compat_ioctl.c b/fs/compat_ioctl.c
index 641640dc7ae5..03e59aa318eb 100644
--- a/fs/compat_ioctl.c
+++ b/fs/compat_ioctl.c
@@ -4,7 +4,7 @@
4 * Copyright (C) 1997-2000 Jakub Jelinek (jakub@redhat.com) 4 * Copyright (C) 1997-2000 Jakub Jelinek (jakub@redhat.com)
5 * Copyright (C) 1998 Eddie C. Dost (ecd@skynet.be) 5 * Copyright (C) 1998 Eddie C. Dost (ecd@skynet.be)
6 * Copyright (C) 2001,2002 Andi Kleen, SuSE Labs 6 * Copyright (C) 2001,2002 Andi Kleen, SuSE Labs
7 * Copyright (C) 2003 Pavel Machek (pavel@suse.cz) 7 * Copyright (C) 2003 Pavel Machek (pavel@ucw.cz)
8 * 8 *
9 * These routines maintain argument size conversion between 32bit and 64bit 9 * These routines maintain argument size conversion between 32bit and 64bit
10 * ioctls. 10 * ioctls.
@@ -131,23 +131,6 @@ static int w_long(unsigned int fd, unsigned int cmd,
131 return err; 131 return err;
132} 132}
133 133
134static int rw_long(unsigned int fd, unsigned int cmd,
135 compat_ulong_t __user *argp)
136{
137 mm_segment_t old_fs = get_fs();
138 int err;
139 unsigned long val;
140
141 if(get_user(val, argp))
142 return -EFAULT;
143 set_fs (KERNEL_DS);
144 err = sys_ioctl(fd, cmd, (unsigned long)&val);
145 set_fs (old_fs);
146 if (!err && put_user(val, argp))
147 return -EFAULT;
148 return err;
149}
150
151struct compat_video_event { 134struct compat_video_event {
152 int32_t type; 135 int32_t type;
153 compat_time_t timestamp; 136 compat_time_t timestamp;
@@ -594,15 +577,12 @@ static int do_smb_getmountuid(unsigned int fd, unsigned int cmd,
594 return err; 577 return err;
595} 578}
596 579
597static int ioc_settimeout(unsigned int fd, unsigned int cmd,
598 compat_ulong_t __user *argp)
599{
600 return rw_long(fd, AUTOFS_IOC_SETTIMEOUT, argp);
601}
602
603/* Bluetooth ioctls */ 580/* Bluetooth ioctls */
604#define HCIUARTSETPROTO _IOW('U', 200, int) 581#define HCIUARTSETPROTO _IOW('U', 200, int)
605#define HCIUARTGETPROTO _IOR('U', 201, int) 582#define HCIUARTGETPROTO _IOR('U', 201, int)
583#define HCIUARTGETDEVICE _IOR('U', 202, int)
584#define HCIUARTSETFLAGS _IOW('U', 203, int)
585#define HCIUARTGETFLAGS _IOR('U', 204, int)
606 586
607#define BNEPCONNADD _IOW('B', 200, int) 587#define BNEPCONNADD _IOW('B', 200, int)
608#define BNEPCONNDEL _IOW('B', 201, int) 588#define BNEPCONNDEL _IOW('B', 201, int)
@@ -966,6 +946,7 @@ COMPATIBLE_IOCTL(TIOCGPGRP)
966COMPATIBLE_IOCTL(TIOCGPTN) 946COMPATIBLE_IOCTL(TIOCGPTN)
967COMPATIBLE_IOCTL(TIOCSPTLCK) 947COMPATIBLE_IOCTL(TIOCSPTLCK)
968COMPATIBLE_IOCTL(TIOCSERGETLSR) 948COMPATIBLE_IOCTL(TIOCSERGETLSR)
949COMPATIBLE_IOCTL(TIOCSIG)
969#ifdef TCGETS2 950#ifdef TCGETS2
970COMPATIBLE_IOCTL(TCGETS2) 951COMPATIBLE_IOCTL(TCGETS2)
971COMPATIBLE_IOCTL(TCSETS2) 952COMPATIBLE_IOCTL(TCSETS2)
@@ -1281,13 +1262,6 @@ COMPATIBLE_IOCTL(SOUND_MIXER_PRIVATE5)
1281COMPATIBLE_IOCTL(SOUND_MIXER_GETLEVELS) 1262COMPATIBLE_IOCTL(SOUND_MIXER_GETLEVELS)
1282COMPATIBLE_IOCTL(SOUND_MIXER_SETLEVELS) 1263COMPATIBLE_IOCTL(SOUND_MIXER_SETLEVELS)
1283COMPATIBLE_IOCTL(OSS_GETVERSION) 1264COMPATIBLE_IOCTL(OSS_GETVERSION)
1284/* AUTOFS */
1285COMPATIBLE_IOCTL(AUTOFS_IOC_CATATONIC)
1286COMPATIBLE_IOCTL(AUTOFS_IOC_PROTOVER)
1287COMPATIBLE_IOCTL(AUTOFS_IOC_EXPIRE)
1288COMPATIBLE_IOCTL(AUTOFS_IOC_EXPIRE_MULTI)
1289COMPATIBLE_IOCTL(AUTOFS_IOC_PROTOSUBVER)
1290COMPATIBLE_IOCTL(AUTOFS_IOC_ASKUMOUNT)
1291/* Raw devices */ 1265/* Raw devices */
1292COMPATIBLE_IOCTL(RAW_SETBIND) 1266COMPATIBLE_IOCTL(RAW_SETBIND)
1293COMPATIBLE_IOCTL(RAW_GETBIND) 1267COMPATIBLE_IOCTL(RAW_GETBIND)
@@ -1328,6 +1302,8 @@ COMPATIBLE_IOCTL(HCISETLINKPOL)
1328COMPATIBLE_IOCTL(HCISETLINKMODE) 1302COMPATIBLE_IOCTL(HCISETLINKMODE)
1329COMPATIBLE_IOCTL(HCISETACLMTU) 1303COMPATIBLE_IOCTL(HCISETACLMTU)
1330COMPATIBLE_IOCTL(HCISETSCOMTU) 1304COMPATIBLE_IOCTL(HCISETSCOMTU)
1305COMPATIBLE_IOCTL(HCIBLOCKADDR)
1306COMPATIBLE_IOCTL(HCIUNBLOCKADDR)
1331COMPATIBLE_IOCTL(HCIINQUIRY) 1307COMPATIBLE_IOCTL(HCIINQUIRY)
1332COMPATIBLE_IOCTL(HCIUARTSETPROTO) 1308COMPATIBLE_IOCTL(HCIUARTSETPROTO)
1333COMPATIBLE_IOCTL(HCIUARTGETPROTO) 1309COMPATIBLE_IOCTL(HCIUARTGETPROTO)
@@ -1552,9 +1528,6 @@ static long do_ioctl_trans(int fd, unsigned int cmd,
1552 case RAW_GETBIND: 1528 case RAW_GETBIND:
1553 return raw_ioctl(fd, cmd, argp); 1529 return raw_ioctl(fd, cmd, argp);
1554#endif 1530#endif
1555#define AUTOFS_IOC_SETTIMEOUT32 _IOWR(0x93,0x64,unsigned int)
1556 case AUTOFS_IOC_SETTIMEOUT32:
1557 return ioc_settimeout(fd, cmd, argp);
1558 /* One SMB ioctl needs translations. */ 1531 /* One SMB ioctl needs translations. */
1559#define SMB_IOC_GETMOUNTUID_32 _IOR('u', 1, compat_uid_t) 1532#define SMB_IOC_GETMOUNTUID_32 _IOR('u', 1, compat_uid_t)
1560 case SMB_IOC_GETMOUNTUID_32: 1533 case SMB_IOC_GETMOUNTUID_32:
@@ -1609,9 +1582,6 @@ static long do_ioctl_trans(int fd, unsigned int cmd,
1609 case KDSKBMETA: 1582 case KDSKBMETA:
1610 case KDSKBLED: 1583 case KDSKBLED:
1611 case KDSETLED: 1584 case KDSETLED:
1612 /* AUTOFS */
1613 case AUTOFS_IOC_READY:
1614 case AUTOFS_IOC_FAIL:
1615 /* NBD */ 1585 /* NBD */
1616 case NBD_SET_SOCK: 1586 case NBD_SET_SOCK:
1617 case NBD_SET_BLKSIZE: 1587 case NBD_SET_BLKSIZE:
@@ -1729,8 +1699,7 @@ asmlinkage long compat_sys_ioctl(unsigned int fd, unsigned int cmd,
1729 goto out_fput; 1699 goto out_fput;
1730 } 1700 }
1731 1701
1732 if (!filp->f_op || 1702 if (!filp->f_op || !filp->f_op->unlocked_ioctl)
1733 (!filp->f_op->ioctl && !filp->f_op->unlocked_ioctl))
1734 goto do_ioctl; 1703 goto do_ioctl;
1735 break; 1704 break;
1736 } 1705 }