Re: [PATCH v3 16/16] blktrace: handle BLKTRACESETUP2 ioctl

Christoph Hellwig <[email protected]> Thu, 16 Oct 2025 09:11:15 +0200
Newsgroups org.kernel.vger.linux-btrace,org.kernel.vger.linux-block,org.kernel.vger.linux-kernel,org.kernel.vger.linux-trace-kernel
Message-ID <[email protected]>
> +static int blk_trace_setup2(struct request_queue *q, char *name, dev_t dev,
> +			    struct block_device *bdev, char __user *arg)
> +{
> +	struct blk_user_trace_setup2 buts2;
> +	struct blk_trace *bt;
> +	int ret;
> +
> +	ret = copy_from_user(&buts2, arg, sizeof(buts2));
> +	if (ret)
> +		return -EFAULT;

You can simplify this to the more usual:

	if (copy_from_user(&buts2, arg, sizeof(buts2)))
		return -EFAULT;

> +
> +	if (!buts2.buf_size || !buts2.buf_nr)
> +		return -EINVAL;

This should probably also check that nothing is set in the flags field
so that it can be used for backwards compatible extensions?