Re: [PATCH net-next] net: ethtool: Fix out-of-bounds copy to user

From: Jakub Kicinski
Date: Mon Jun 05 2023 - 14:39:23 EST


On Mon, 5 Jun 2023 11:39:59 +0800 Ding Hui wrote:
> Case 1:
> If the user len/n_stats is not zero, we will treat it as correct usage
> (although we cannot distinguish between the real correct usage and
> uninitialized usage). Return -EINVAL if current length exceed the one
> user specified.

This assumes user will zero-initialize the value rather than do
something like:

buf = malloc(1 << 16); // 64k should always be enough
ioctl(s, ETHTOOL_GSTATS, buf)

for (i = 0; i < buf.n_stats; i++)
/* use stats */

:(

> Case 2:
> If it is zero, we will treat it as incorrect usage, we can add a
> pr_err_once() for it and keep to be compatible with it for a period of time.
> At a suitable time in the future, this part can be removed by maintainers.