ext2_setattr() drops the inode_setattr() return value on the floor. This is very bad - I/O errors during truncate are lost. The patch changes ext2_setattr() so that we no longer call ext2_acl_chmod() if inode_setattr(), which is what ext3 does. Signed-off-by: Andrew Morton --- 25-akpm/fs/ext2/inode.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff -puN fs/ext2/inode.c~setattr-retval-fixes fs/ext2/inode.c --- 25/fs/ext2/inode.c~setattr-retval-fixes 2004-06-26 14:35:58.479309024 -0700 +++ 25-akpm/fs/ext2/inode.c 2004-06-26 14:35:58.483308416 -0700 @@ -1276,8 +1276,8 @@ int ext2_setattr(struct dentry *dentry, if (error) return error; } - inode_setattr(inode, iattr); - if (iattr->ia_valid & ATTR_MODE) + error = inode_setattr(inode, iattr); + if (!error && (iattr->ia_valid & ATTR_MODE)) error = ext2_acl_chmod(inode); return error; } _