Re: [PATCH v5 0/6] Add multiple address spaces support to VDUSE

From: Eugenio Perez Martin

Date: Mon Sep 29 2025 - 01:41:54 EST


On Fri, Sep 26, 2025 at 4:37 PM Michael S. Tsirkin <mst@xxxxxxxxxx> wrote:
>
> On Fri, Sep 26, 2025 at 12:14:26PM +0200, Eugenio Pérez wrote:
> > PATCH v5:
> > * Properly return errno if copy_to_user returns >0 in VDUSE_IOTLB_GET_FD
> > ioctl (Jason).
>
> ???
>
> I think copy_to_user returns an unsigned value: the number of bytes copied.
>
>
> static __always_inline unsigned long __must_check
> copy_from_user(void *to, const void __user *from, unsigned long n)
> {
> if (!check_copy_size(to, n, false))
> return n;
> #ifdef INLINE_COPY_FROM_USER
> return _inline_copy_from_user(to, from, n);
> #else
> return _copy_from_user(to, from, n);
> #endif
> }
>
>
> so, how does the patch work then?
>

copy_from_user returns the number of bytes that could not be copied.
For example when the object size in the kernel is less than n bytes
long, check_copy_size returns false and copy_from_user returns n, the
amount of size requested to copy.