Messages in this thread Patch in this message | | | Date | Wed, 28 Apr 2010 18:34:31 +0200 (CEST) | From | Thomas Gleixner <> | Subject | Re: 2.6.33.3-rt16 Oops caused by umount |
| |
On Wed, 28 Apr 2010, Xianghua Xiao wrote: > Just tried the patch, still got umount hang, please see below.
Can you please apply the patch below and provide the debug output ?
Thanks,
tglx --- fs/file_table.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-)
Index: linux-2.6-tip/fs/file_table.c =================================================================== --- linux-2.6-tip.orig/fs/file_table.c +++ linux-2.6-tip/fs/file_table.c @@ -410,7 +410,27 @@ int fs_may_remount_ro(struct super_block list = &sb->s_files; #endif list_for_each_entry(file, list, f_u.fu_list) { - struct inode *inode = file->f_path.dentry->d_inode; + struct inode *inode; + + if (!file->f_path) { + printk(KERN_ERR "file %p fpath == NULL\n", + file); + continue; + } + + if (!file->f_path.dentry) { + printk(KERN_ERR "file %p dentry == NULL\n", + file); + continue; + } + + if (!file->f_path.dentry->d_inode) { + printk(KERN_ERR "file %p d_inode == NULL\n", + file); + continue; + } + + inode = file->f_path.dentry->d_inode; /* File with pending delete? */ if (inode->i_nlink == 0)
| |