On Sun, 18 Oct 2026 at 09:26, Michael S. Tsirkin <[email protected]> wrote:
>
> + __virtio16 __user *uaddr = ivec.iov.iovec[0].iov_base;
> +
> + if (!access_ok(uaddr, sizeof(*p)))
> + return -EFAULT;
> + ret = __get_user(tmp, uaddr);
You should never use __get_user() in the first place. It is almost
always just a bug.
And __get_user() together with access_ok() is actively wrong and
stupid. It's slower, bigger, and more bug-prone than just using
"get_user()".
The *only* reason ever to use __get_user() is in very very iffy code
that might use a kernel pointer and doesn't want the access_ok() code.
Or old legacy code from the last century when __get_user() was faster
and was inlined.
Linus