block_truncate_page may fail under certain circumstances, so its result
should be checked.

Signed-off-by: Chengyu Song <cson...@gatech.edu>
---
 fs/ufs/truncate.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/fs/ufs/truncate.c b/fs/ufs/truncate.c
index f04f89f..8b41f07 100644
--- a/fs/ufs/truncate.c
+++ b/fs/ufs/truncate.c
@@ -464,7 +464,12 @@ int ufs_truncate(struct inode *inode, loff_t old_i_size)
                goto out;
        }
 
-       block_truncate_page(inode->i_mapping, inode->i_size, ufs_getfrag_block);
+       err = block_truncate_page(inode->i_mapping, inode->i_size, 
ufs_getfrag_block);
+
+       if (err) {
+               i_size_write(inode, old_i_size);
+               goto out;
+       }
 
        while (1) {
                retry = ufs_trunc_direct(inode);
-- 
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to