ext4 : Fix error handling in acl.c if journal start fails
PATCH 1/3 ext4 : Fix error handling in acl.c if journal start fails
Hi Ted,
This patch fixes following issues.
a) Incase journal transaction allocation fails due to ENOMEM don't call ext4_std_error() since it will remount the fs as readonly and logs the message in kernel log.
b) Call posix_acl_release() incase journal allocation fails in case of error paths.
Signed-off-by Manish Katiyar <[email protected]>
Acked-by Jan Kara <[email protected]>
--- fs/ext4/acl.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-)
fs/ext4/acl.c +6 -3
@@ -354,7 +354,8 @@ ext4_acl_chmod(struct inode *inode) EXT4_DATA_TRANS_BLOCKS(inode->i_sb));if (IS_ERR (handle)) { error =PTR_ERR (handle); -ext4_std_error (inode->i_sb, error); +if (error != -ENOMEM ) +ext4_std_error (inode->i_sb, error); goto out; } error =ext4_set_acl (handle, inode,ACL_TYPE_ACCESS , clone);
@@ -450,8 +451,10 @@ ext4_xattr_set_acl(struct dentry *dentry, const char *name, const void *value, retry: handle =ext4_journal_start (inode,EXT4_DATA_TRANS_BLOCKS (inode->i_sb)); -if (IS_ERR (handle)) -return PTR_ERR (handle); +if (IS_ERR (handle)) { + error =PTR_ERR (handle); + goto release_and_out; + } error =ext4_set_acl (handle, inode, type, acl);ext4_journal_stop (handle);if (error == -ENOSPC &&ext4_should_retry_alloc (inode->i_sb, &retries))
Signature · 5 lines
1.7.4.1 -- Thanks - Manish