Re: [PATCH 02/33] xfs: reject invalid flags combinations in XFS_IOC_ATTRMULTI_BY_HANDLE

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Dec 12, 2019 at 11:54:02AM +0100, Christoph Hellwig wrote:
> While the flags field in the ABI and the on-disk format allows for
> multiple namespace flags, that is a logically invalid combination that
> scrub complains about.  Reject it at the ioctl level, as all other
> interface already get this right at higher levels.
> 
> Signed-off-by: Christoph Hellwig <hch@xxxxxx>

Looks ok I think.  We never have attrs in two namespaces at once...
assuming that "attr_multi(3)" is the right manpage for all this?

Reviewed-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx>

--D

> ---
>  fs/xfs/xfs_ioctl.c   | 5 +++++
>  fs/xfs/xfs_ioctl32.c | 5 +++++
>  2 files changed, 10 insertions(+)
> 
> diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
> index 2f76d0a7b818..f3a53e0db2cf 100644
> --- a/fs/xfs/xfs_ioctl.c
> +++ b/fs/xfs/xfs_ioctl.c
> @@ -462,6 +462,11 @@ xfs_attrmulti_by_handle(
>  
>  	error = 0;
>  	for (i = 0; i < am_hreq.opcount; i++) {
> +		if ((ops[i].am_flags & ATTR_ROOT) &&
> +		    (ops[i].am_flags & ATTR_SECURE)) {
> +			ops[i].am_error = -EINVAL;
> +			continue;
> +		}
>  		ops[i].am_flags &= ATTR_KERNEL_FLAGS;
>  
>  		ops[i].am_error = strncpy_from_user((char *)attr_name,
> diff --git a/fs/xfs/xfs_ioctl32.c b/fs/xfs/xfs_ioctl32.c
> index 8b5acf8c42e1..720eb72f3be3 100644
> --- a/fs/xfs/xfs_ioctl32.c
> +++ b/fs/xfs/xfs_ioctl32.c
> @@ -450,6 +450,11 @@ xfs_compat_attrmulti_by_handle(
>  
>  	error = 0;
>  	for (i = 0; i < am_hreq.opcount; i++) {
> +		if ((ops[i].am_flags & ATTR_ROOT) &&
> +		    (ops[i].am_flags & ATTR_SECURE)) {
> +			ops[i].am_error = -EINVAL;
> +			continue;
> +		}
>  		ops[i].am_flags &= ATTR_KERNEL_FLAGS;
>  
>  		ops[i].am_error = strncpy_from_user((char *)attr_name,
> -- 
> 2.20.1
> 



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux