diff --git a/fs/hpfs/file.c b/fs/hpfs/file.c index 3027f4dbbab5195990a13d763055f229fa06213a..e4ba5fe4c3b52fad13ffcfd18fb2ad962c53c2f5 100644 --- a/fs/hpfs/file.c +++ b/fs/hpfs/file.c @@ -109,10 +109,14 @@ static void hpfs_write_failed(struct address_space *mapping, loff_t to) { struct inode *inode = mapping->host; + hpfs_lock(inode->i_sb); + if (to > inode->i_size) { truncate_pagecache(inode, to, inode->i_size); hpfs_truncate(inode); } + + hpfs_unlock(inode->i_sb); } static int hpfs_write_begin(struct file *file, struct address_space *mapping,