Unverified Commit 791e5620 authored by Konstantin Komarov's avatar Konstantin Komarov
Browse files

fs/ntfs3: Minor ntfs_list_ea refactoring



For easy internal debugging.

Signed-off-by: default avatarKonstantin Komarov <almaz.alexandrovich@paragon-software.com>
parent 74437534
Loading
Loading
Loading
Loading
+13 −12
Original line number Diff line number Diff line
@@ -195,10 +195,8 @@ static ssize_t ntfs_list_ea(struct ntfs_inode *ni, char *buffer,
{
	const struct EA_INFO *info;
	struct EA_FULL *ea_all = NULL;
	const struct EA_FULL *ea;
	u32 off, size;
	int err;
	int ea_size;
	size_t ret;

	err = ntfs_read_ea(ni, &ea_all, 0, &info);
@@ -212,16 +210,18 @@ static ssize_t ntfs_list_ea(struct ntfs_inode *ni, char *buffer,

	/* Enumerate all xattrs. */
	ret = 0;
	for (off = 0; off + sizeof(struct EA_FULL) < size; off += ea_size) {
		ea = Add2Ptr(ea_all, off);
		ea_size = unpacked_ea_size(ea);
	off = 0;
	while (off + sizeof(struct EA_FULL) < size) {
		const struct EA_FULL *ea = Add2Ptr(ea_all, off);
		int ea_size = unpacked_ea_size(ea);
		u8 name_len = ea->name_len;

		if (!ea->name_len)
		if (!name_len)
			break;

		if (ea->name_len > ea_size) {
		if (name_len > ea_size) {
			ntfs_set_state(ni->mi.sbi, NTFS_DIRTY_ERROR);
			err = -EINVAL; /* corrupted fs */
			err = -EINVAL; /* corrupted fs. */
			break;
		}

@@ -230,16 +230,17 @@ static ssize_t ntfs_list_ea(struct ntfs_inode *ni, char *buffer,
			if (off + ea_size > size)
				break;

			if (ret + ea->name_len + 1 > bytes_per_buffer) {
			if (ret + name_len + 1 > bytes_per_buffer) {
				err = -ERANGE;
				goto out;
			}

			memcpy(buffer + ret, ea->name, ea->name_len);
			buffer[ret + ea->name_len] = 0;
			memcpy(buffer + ret, ea->name, name_len);
			buffer[ret + name_len] = 0;
		}

		ret += ea->name_len + 1;
		ret += name_len + 1;
		off += ea_size;
	}

out: