From: David S. Miller Date: Mon, 11 Mar 2002 01:08:46 +0000 (-0800) Subject: Read lock around files->fd[] accesses. X-Git-Tag: v2.5.7-pre1~5^2~5 X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=87c85b436e0f81e5bd44cb4f50a0c4b38b0a2d2b;p=history.git Read lock around files->fd[] accesses. --- diff --git a/arch/sparc64/solaris/ioctl.c b/arch/sparc64/solaris/ioctl.c index 0b1919635ab3..d7f39f49d1c7 100644 --- a/arch/sparc64/solaris/ioctl.c +++ b/arch/sparc64/solaris/ioctl.c @@ -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(¤t->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(¤t->files->file_lock); return TBADF; + } + read_unlock(¤t->files->file_lock); switch (cmd & 0xff) { case 109: /* SI_SOCKPARAMS */