|
|
@@ -146,7 +146,7 @@ __xfs_xattr_put_listent(
|
|
|
arraytop = context->count + prefix_len + namelen + 1;
|
|
|
if (arraytop > context->firstu) {
|
|
|
context->count = -1; /* insufficient space */
|
|
|
- return 1;
|
|
|
+ return 0;
|
|
|
}
|
|
|
offset = (char *)context->alist + context->count;
|
|
|
strncpy(offset, prefix, prefix_len);
|
|
|
@@ -221,11 +221,15 @@ xfs_xattr_put_listent(
|
|
|
}
|
|
|
|
|
|
ssize_t
|
|
|
-xfs_vn_listxattr(struct dentry *dentry, char *data, size_t size)
|
|
|
+xfs_vn_listxattr(
|
|
|
+ struct dentry *dentry,
|
|
|
+ char *data,
|
|
|
+ size_t size)
|
|
|
{
|
|
|
struct xfs_attr_list_context context;
|
|
|
struct attrlist_cursor_kern cursor = { 0 };
|
|
|
- struct inode *inode = d_inode(dentry);
|
|
|
+ struct inode *inode = d_inode(dentry);
|
|
|
+ int error;
|
|
|
|
|
|
/*
|
|
|
* First read the regular on-disk attributes.
|
|
|
@@ -239,7 +243,9 @@ xfs_vn_listxattr(struct dentry *dentry, char *data, size_t size)
|
|
|
context.firstu = context.bufsize;
|
|
|
context.put_listent = xfs_xattr_put_listent;
|
|
|
|
|
|
- xfs_attr_list_int(&context);
|
|
|
+ error = xfs_attr_list_int(&context);
|
|
|
+ if (error)
|
|
|
+ return error;
|
|
|
if (context.count < 0)
|
|
|
return -ERANGE;
|
|
|
|