]> git.neil.brown.name Git - history.git/commitdiff
Read lock around files->fd[] accesses.
authorDavid S. Miller <davem@nuts.ninka.net>
Mon, 11 Mar 2002 01:08:46 +0000 (17:08 -0800)
committerDavid S. Miller <davem@nuts.ninka.net>
Mon, 11 Mar 2002 01:08:46 +0000 (17:08 -0800)
arch/sparc64/solaris/ioctl.c

index 0b1919635ab3e61fa41ca4fcccddfb8cae9d8cc8..d7f39f49d1c7c1923485bc92366ad2a5fa9a8e69 100644 (file)
@@ -289,11 +289,15 @@ static inline int solaris_sockmod(unsigned int fd, unsigned int cmd, u32 arg)
 {
        struct inode *ino;
        /* I wonder which of these tests are superfluous... --patrik */
+       read_lock(&current->files->file_lock);
        if (! current->files->fd[fd] ||
            ! current->files->fd[fd]->f_dentry ||
            ! (ino = current->files->fd[fd]->f_dentry->d_inode) ||
-           ! ino->i_sock)
+           ! ino->i_sock) {
+               read_unlock(&current->files->file_lock);
                return TBADF;
+       }
+       read_unlock(&current->files->file_lock);
        
        switch (cmd & 0xff) {
        case 109: /* SI_SOCKPARAMS */