diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1999-09-28 22:25:29 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1999-09-28 22:25:29 +0000 |
commit | 0ae8dceaebe3659ee0c3352c08125f403e77ebca (patch) | |
tree | 5085c389f09da78182b899d19fe1068b619a69dd /arch/sparc64/solaris | |
parent | 273767781288c35c9d679e908672b9996cda4c34 (diff) |
Merge with 2.3.10.
Diffstat (limited to 'arch/sparc64/solaris')
-rw-r--r-- | arch/sparc64/solaris/ioctl.c | 22 | ||||
-rw-r--r-- | arch/sparc64/solaris/socksys.c | 1 |
2 files changed, 7 insertions, 16 deletions
diff --git a/arch/sparc64/solaris/ioctl.c b/arch/sparc64/solaris/ioctl.c index 9f1c0f4d1..82a583c29 100644 --- a/arch/sparc64/solaris/ioctl.c +++ b/arch/sparc64/solaris/ioctl.c @@ -367,15 +367,8 @@ static inline int solaris_sockmod(unsigned int fd, unsigned int cmd, u32 arg) static inline int solaris_timod(unsigned int fd, unsigned int cmd, u32 arg, int len, int *len_p) { - struct file *filp; struct inode *ino; int ret; - - filp = current->files->fd[fd]; - if (! filp || - ! (ino = filp->f_dentry->d_inode) || - ! ino->i_sock) - return TBADF; switch (cmd & 0xff) { case 141: /* TI_OPTMGMT */ @@ -459,7 +452,7 @@ static inline int solaris_timod(unsigned int fd, unsigned int cmd, u32 arg, return TNOTSUPPORT; } -static inline int solaris_S(unsigned int fd, unsigned int cmd, u32 arg) +static inline int solaris_S(struct file *filp, unsigned int fd, unsigned int cmd, u32 arg) { char *p; int ret; @@ -470,9 +463,7 @@ static inline int solaris_S(unsigned int fd, unsigned int cmd, u32 arg) struct sol_socket_struct *sock; struct module_info *mi; - filp = current->files->fd[fd]; - if (! filp || - ! (ino = filp->f_dentry->d_inode) || + if (! (ino = filp->f_dentry->d_inode) || ! ino->i_sock) return -EBADF; sock = filp->private_data; @@ -696,14 +687,14 @@ asmlinkage int solaris_ioctl(unsigned int fd, unsigned int cmd, u32 arg) struct file *filp; int error = -EBADF; - lock_kernel(); - filp = fcheck(fd); + filp = fget(fd); if (!filp) goto out; + lock_kernel(); error = -EFAULT; switch ((cmd >> 8) & 0xff) { - case 'S': error = solaris_S(fd, cmd, arg); break; + case 'S': error = solaris_S(filp, fd, cmd, arg); break; case 'T': error = solaris_T(fd, cmd, arg); break; case 'i': error = solaris_i(fd, cmd, arg); break; case 'r': error = solaris_r(fd, cmd, arg); break; @@ -714,6 +705,8 @@ asmlinkage int solaris_ioctl(unsigned int fd, unsigned int cmd, u32 arg) error = -ENOSYS; break; } + unlock_kernel(); + fput(filp); out: if (error == -ENOSYS) { unsigned char c = cmd>>8; @@ -723,6 +716,5 @@ out: (int)fd, (unsigned int)cmd, c, (unsigned int)arg); error = -EINVAL; } - unlock_kernel(); return error; } diff --git a/arch/sparc64/solaris/socksys.c b/arch/sparc64/solaris/socksys.c index dbdbcd1a2..f6d31920e 100644 --- a/arch/sparc64/solaris/socksys.c +++ b/arch/sparc64/solaris/socksys.c @@ -16,7 +16,6 @@ #include <linux/file.h> #include <linux/init.h> #include <linux/poll.h> -#include <linux/file.h> #include <linux/malloc.h> #include <asm/uaccess.h> |