mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-15 21:36:42 +07:00
xfs: lift common checks into xfs_ioc_attr_list
Lift the flags and bufsize checks from both callers into the common code in xfs_ioc_attr_list. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Chandan Rajendra <chandanrlinux@gmail.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
This commit is contained in:
parent
17e1dd83ea
commit
f604631951
@ -361,6 +361,18 @@ xfs_ioc_attr_list(
|
||||
struct xfs_attrlist *alist;
|
||||
int error;
|
||||
|
||||
if (bufsize < sizeof(struct xfs_attrlist) ||
|
||||
bufsize > XFS_XATTR_LIST_MAX)
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
* Reject flags, only allow namespaces.
|
||||
*/
|
||||
if (flags & ~(ATTR_ROOT | ATTR_SECURE))
|
||||
return -EINVAL;
|
||||
if (flags == (ATTR_ROOT | ATTR_SECURE))
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
* Validate the cursor.
|
||||
*/
|
||||
@ -415,17 +427,6 @@ xfs_attrlist_by_handle(
|
||||
return -EPERM;
|
||||
if (copy_from_user(&al_hreq, arg, sizeof(xfs_fsop_attrlist_handlereq_t)))
|
||||
return -EFAULT;
|
||||
if (al_hreq.buflen < sizeof(struct xfs_attrlist) ||
|
||||
al_hreq.buflen > XFS_XATTR_LIST_MAX)
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
* Reject flags, only allow namespaces.
|
||||
*/
|
||||
if (al_hreq.flags & ~(ATTR_ROOT | ATTR_SECURE))
|
||||
return -EINVAL;
|
||||
if (al_hreq.flags == (ATTR_ROOT | ATTR_SECURE))
|
||||
return -EINVAL;
|
||||
|
||||
dentry = xfs_handlereq_to_dentry(parfilp, &al_hreq.hreq);
|
||||
if (IS_ERR(dentry))
|
||||
|
@ -366,17 +366,6 @@ xfs_compat_attrlist_by_handle(
|
||||
if (copy_from_user(&al_hreq, arg,
|
||||
sizeof(compat_xfs_fsop_attrlist_handlereq_t)))
|
||||
return -EFAULT;
|
||||
if (al_hreq.buflen < sizeof(struct xfs_attrlist) ||
|
||||
al_hreq.buflen > XFS_XATTR_LIST_MAX)
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
* Reject flags, only allow namespaces.
|
||||
*/
|
||||
if (al_hreq.flags & ~(ATTR_ROOT | ATTR_SECURE))
|
||||
return -EINVAL;
|
||||
if (al_hreq.flags == (ATTR_ROOT | ATTR_SECURE))
|
||||
return -EINVAL;
|
||||
|
||||
dentry = xfs_compat_handlereq_to_dentry(parfilp, &al_hreq.hreq);
|
||||
if (IS_ERR(dentry))
|
||||
|
Loading…
Reference in New Issue
Block a user