[PATCH] Remove compat ioctl semaphore
Originally for 2.6.16, but the semaphore causes problems for some people so get rid of it now. It's not needed anymore because the ioctl hash table is never changed at run time now. Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
e6c667592e
commit
9e18fcdd34
|
@ -268,7 +268,6 @@ out:
|
|||
|
||||
#define IOCTL_HASHSIZE 256
|
||||
static struct ioctl_trans *ioctl32_hash_table[IOCTL_HASHSIZE];
|
||||
static DECLARE_RWSEM(ioctl32_sem);
|
||||
|
||||
extern struct ioctl_trans ioctl_start[];
|
||||
extern int ioctl_table_size;
|
||||
|
@ -390,14 +389,10 @@ asmlinkage long compat_sys_ioctl(unsigned int fd, unsigned int cmd,
|
|||
break;
|
||||
}
|
||||
|
||||
/* When register_ioctl32_conversion is finally gone remove
|
||||
this lock! -AK */
|
||||
down_read(&ioctl32_sem);
|
||||
for (t = ioctl32_hash_table[ioctl32_hash(cmd)]; t; t = t->next) {
|
||||
if (t->cmd == cmd)
|
||||
goto found_handler;
|
||||
}
|
||||
up_read(&ioctl32_sem);
|
||||
|
||||
if (S_ISSOCK(filp->f_dentry->d_inode->i_mode) &&
|
||||
cmd >= SIOCDEVPRIVATE && cmd <= (SIOCDEVPRIVATE + 15)) {
|
||||
|
@ -417,11 +412,9 @@ asmlinkage long compat_sys_ioctl(unsigned int fd, unsigned int cmd,
|
|||
lock_kernel();
|
||||
error = t->handler(fd, cmd, arg, filp);
|
||||
unlock_kernel();
|
||||
up_read(&ioctl32_sem);
|
||||
goto out_fput;
|
||||
}
|
||||
|
||||
up_read(&ioctl32_sem);
|
||||
do_ioctl:
|
||||
error = vfs_ioctl(filp, fd, cmd, arg);
|
||||
out_fput:
|
||||
|
|
Loading…
Reference in a new issue