Anna Schumaker <Anna.Schumaker@xxxxxxxxxx> writes:
> @@ -1338,34 +1362,26 @@ ssize_t vfs_copy_file_range(struct file *file_in, loff_t pos_in,
> struct file *file_out, loff_t pos_out,
> size_t len, unsigned int flags)
> {
> - struct inode *inode_in;
> - struct inode *inode_out;
> ssize_t ret;
>
> - if (flags)
> + /* Flags should only be used exclusively. */
> + if ((flags & COPY_FR_COPY) && (flags & ~COPY_FR_COPY))
> + return -EINVAL;
> + if ((flags & COPY_FR_REFLINK) && (flags & ~COPY_FR_REFLINK))
> + return -EINVAL;
> + if ((flags & COPY_FR_DEDUP) && (flags & ~COPY_FR_DEDUP))
> return -EINVAL;
>
Do you also need:
if (flags & ~(COPY_FR_COPY | COPY_FR_REFLINK | COPY_FR_DEDUP))
return -EINVAL;
so that future user-space can test if the kernel supports new flags?
NeilBrown
Attachment:
signature.asc
Description: PGP signature
