Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 16 Mar 2011 20:26:17 +0000 (13:26 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 16 Mar 2011 20:26:17 +0000 (13:26 -0700)
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:
  fix cdev leak on O_PATH final fput()

fs/file_table.c

index bfab973..01e4c1e 100644 (file)
@@ -247,8 +247,10 @@ static void __fput(struct file *file)
                file->f_op->release(inode, file);
        security_file_free(file);
        ima_file_free(file);
-       if (unlikely(S_ISCHR(inode->i_mode) && inode->i_cdev != NULL))
+       if (unlikely(S_ISCHR(inode->i_mode) && inode->i_cdev != NULL &&
+                    !(file->f_mode & FMODE_PATH))) {
                cdev_put(inode->i_cdev);
+       }
        fops_put(file->f_op);
        put_pid(file->f_owner.pid);
        file_sb_list_del(file);