diff --git a/fs/ntfs3/inode.c b/fs/ntfs3/inode.c index dc7e7ab701c6..fdb6ca9e18d3 100644 --- a/fs/ntfs3/inode.c +++ b/fs/ntfs3/inode.c @@ -1779,7 +1779,7 @@ int ntfs_unlink_inode(struct inode *dir, const struct dentry *dentry) mark_inode_dirty(inode); } -out: + out: ni_unlock(ni); __putname(de); return err; @@ -1787,6 +1787,12 @@ int ntfs_unlink_inode(struct inode *dir, const struct dentry *dentry) void ntfs_evict_inode(struct inode *inode) { + struct address_space* mapping = &inode->i_data; + struct address_space *buffer_mapping = mapping->private_data; + + if (buffer_mapping == NULL || list_empty(&mapping->private_list)) { + return; + truncate_inode_pages_final(&inode->i_data); invalidate_inode_buffers(inode);