diff --git a/fs/ext4/acl.c b/fs/ext4/acl.c
index c1d570ee1d9f4e75e7115c43aa359bacfd1c8760..8c7bbf3e566def24a84c4d7819ade77cbcbf9da8 100644
--- a/fs/ext4/acl.c
+++ b/fs/ext4/acl.c
@@ -248,7 +248,8 @@ ext4_set_acl(struct inode *inode, struct posix_acl *acl, int type)
 		error = posix_acl_update_mode(inode, &mode, &acl);
 		if (error)
 			goto out_stop;
-		update_mode = 1;
+		if (mode != inode->i_mode)
+			update_mode = 1;
 	}
 
 	error = __ext4_set_acl(handle, inode, type, acl, 0 /* xattr_flags */);