Unverified Commit b889d5f3 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files
parents 192baac5 e52064e5
Loading
Loading
Loading
Loading
+19 −4
Original line number Diff line number Diff line
@@ -797,7 +797,7 @@ ssize_t __jfs_getxattr(struct inode *inode, const char *name, void *data,
		       size_t buf_size)
{
	struct jfs_ea_list *ealist;
	struct jfs_ea *ea;
	struct jfs_ea *ea, *ealist_end;
	struct ea_buffer ea_buf;
	int xattr_size;
	ssize_t size;
@@ -817,9 +817,16 @@ ssize_t __jfs_getxattr(struct inode *inode, const char *name, void *data,
		goto not_found;

	ealist = (struct jfs_ea_list *) ea_buf.xattr;
	ealist_end = END_EALIST(ealist);

	/* Find the named attribute */
	for (ea = FIRST_EA(ealist); ea < END_EALIST(ealist); ea = NEXT_EA(ea))
	for (ea = FIRST_EA(ealist); ea < ealist_end; ea = NEXT_EA(ea)) {
		if (unlikely(ea + 1 > ealist_end) ||
		    unlikely(NEXT_EA(ea) > ealist_end)) {
			size = -EUCLEAN;
			goto release;
		}

		if ((namelen == ea->namelen) &&
		    memcmp(name, ea->name, namelen) == 0) {
			/* Found it */
@@ -834,6 +841,7 @@ ssize_t __jfs_getxattr(struct inode *inode, const char *name, void *data,
			memcpy(data, value, size);
			goto release;
		}
	}
      not_found:
	size = -ENODATA;
      release:
@@ -861,7 +869,7 @@ ssize_t jfs_listxattr(struct dentry * dentry, char *data, size_t buf_size)
	ssize_t size = 0;
	int xattr_size;
	struct jfs_ea_list *ealist;
	struct jfs_ea *ea;
	struct jfs_ea *ea, *ealist_end;
	struct ea_buffer ea_buf;

	down_read(&JFS_IP(inode)->xattr_sem);
@@ -876,9 +884,16 @@ ssize_t jfs_listxattr(struct dentry * dentry, char *data, size_t buf_size)
		goto release;

	ealist = (struct jfs_ea_list *) ea_buf.xattr;
	ealist_end = END_EALIST(ealist);

	/* compute required size of list */
	for (ea = FIRST_EA(ealist); ea < END_EALIST(ealist); ea = NEXT_EA(ea)) {
	for (ea = FIRST_EA(ealist); ea < ealist_end; ea = NEXT_EA(ea)) {
		if (unlikely(ea + 1 > ealist_end) ||
		    unlikely(NEXT_EA(ea) > ealist_end)) {
			size = -EUCLEAN;
			goto release;
		}

		if (can_list(ea))
			size += name_size(ea) + 1;
	}