From 2636066753a5c75e834a0ba1bc6d8537315022b1 Mon Sep 17 00:00:00 2001 From: Theodore Ts'o Date: Wed, 27 Sep 2006 01:50:49 -0700 Subject: [PATCH] --- yaml --- r: 36196 b: refs/heads/master c: 577c4eb09d1034d0739e3135fd2cff50588024be h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/file_table.c | 2 +- trunk/fs/inode.c | 2 +- trunk/include/linux/fs.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 42e73ee7e077..8fe34fd65085 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: eaf796e7ef6014f208c409b2b14fddcfaafe7e3a +refs/heads/master: 577c4eb09d1034d0739e3135fd2cff50588024be diff --git a/trunk/fs/file_table.c b/trunk/fs/file_table.c index 0131ba06e1ee..bc35a40417d7 100644 --- a/trunk/fs/file_table.c +++ b/trunk/fs/file_table.c @@ -169,7 +169,7 @@ void fastcall __fput(struct file *file) if (file->f_op && file->f_op->release) file->f_op->release(inode, file); security_file_free(file); - if (unlikely(inode->i_cdev != NULL)) + if (unlikely(S_ISCHR(inode->i_mode) && inode->i_cdev != NULL)) cdev_put(inode->i_cdev); fops_put(file->f_op); if (file->f_mode & FMODE_WRITE) diff --git a/trunk/fs/inode.c b/trunk/fs/inode.c index 41b462232f7f..f5c04dd9ae8a 100644 --- a/trunk/fs/inode.c +++ b/trunk/fs/inode.c @@ -256,7 +256,7 @@ void clear_inode(struct inode *inode) inode->i_sb->s_op->clear_inode(inode); if (S_ISBLK(inode->i_mode) && inode->i_bdev) bd_forget(inode); - if (inode->i_cdev) + if (S_ISCHR(inode->i_mode) && inode->i_cdev) cd_forget(inode); inode->i_state = I_CLEAR; } diff --git a/trunk/include/linux/fs.h b/trunk/include/linux/fs.h index 98ff684a5b1c..192e69bb55b5 100644 --- a/trunk/include/linux/fs.h +++ b/trunk/include/linux/fs.h @@ -532,8 +532,8 @@ struct inode { union { struct pipe_inode_info *i_pipe; struct block_device *i_bdev; + struct cdev *i_cdev; }; - struct cdev *i_cdev; int i_cindex; __u32 i_generation;