summaryrefslogtreecommitdiff
path: root/fs/char_dev.c
diff options
context:
space:
mode:
authorJonathan Corbet <corbet@lwn.net>2008-05-18 15:39:11 -0600
committerJonathan Corbet <corbet@lwn.net>2008-06-20 14:05:53 -0600
commita30427d92d0bc152b833088e4a305bbeb1a0c162 (patch)
tree038408c24095627830f8950b3791ea2655270112 /fs/char_dev.c
parentf2b9857eee17797541b845782ade4d7a9d50f843 (diff)
downloadlwn-a30427d92d0bc152b833088e4a305bbeb1a0c162.tar.gz
lwn-a30427d92d0bc152b833088e4a305bbeb1a0c162.zip
Add a comment in chrdev_open()
I stared at this code for a while and almost deleted it before understanding crept into my slow brain. Hopefully this makes life easier for the next person to happen on it. Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Diffstat (limited to 'fs/char_dev.c')
-rw-r--r--fs/char_dev.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/char_dev.c b/fs/char_dev.c
index 68e510b88457..a54d69369b2f 100644
--- a/fs/char_dev.c
+++ b/fs/char_dev.c
@@ -373,6 +373,8 @@ static int chrdev_open(struct inode *inode, struct file *filp)
return -ENXIO;
new = container_of(kobj, struct cdev, kobj);
spin_lock(&cdev_lock);
+ /* Check i_cdev again in case somebody beat us to it while
+ we dropped the lock. */
p = inode->i_cdev;
if (!p) {
inode->i_cdev = p = new;