Re: [PATCH] btrfs: qgroup: delete unnecessary check in btrfs_qgroup_check_inherit()
From: David Sterba
Date: Tue Mar 26 2024 - 11:39:22 EST
On Thu, Mar 07, 2024 at 05:53:47PM +0300, Dan Carpenter wrote:
> This check "if (inherit->num_qgroups > PAGE_SIZE)" is confusing and
> unnecessary.
>
> The problem with the check is that static checkers flag it as a
> potential mixup of between units of bytes vs number of elements.
> Fortunately, the check can safely be deleted because the next check is
> correct and applies an even stricter limit:
>
> if (size != struct_size(inherit, qgroups, inherit->num_qgroups))
> return -EINVAL;
>
> The "inherit" struct ends in a variable array of __u64 and
> "inherit->num_qgroups" is the number of elements in the array. At the
> start of the function we check that:
>
> if (size < sizeof(*inherit) || size > PAGE_SIZE)
> return -EINVAL;
>
> Thus, since we verify that the whole struct fits within one page, that
> means that the number of elements in the inherit->qgroups[] array must
> be less than PAGE_SIZE.
>
> Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
Added to for-next, thanks.