On Tue, Sep 08, 2026 at 03:31:51PM +0800, Linfeng Sun wrote:
> The compat handler handles VDUSE_IOTLB_GET_FD and VDUSE_VQ_GET_INFO, but
> then calls the native handler. Their different command sizes make native
> dispatch return -ENOIOCTLCMD.
> 
> For GET_FD, this overwrites receive_fd()'s return value after the
> descriptor is installed, leaking one fd per call. Return handled compat
> results directly and use native dispatch only for other commands.
> 
> Fixes: 455a2a1af926 ("vduse: fix compat handling for 
> VDUSE_IOTLB_GET_FD/VDUSE_VQ_GET_INFO")
> Signed-off-by: Linfeng Sun <[email protected]>

indeed, I will apply.

Cc Arnd.

But ... how was the original patch working then? Arnd, what gives?

> ---
>  drivers/vdpa/vdpa_user/vduse_dev.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/vdpa/vdpa_user/vduse_dev.c 
> b/drivers/vdpa/vdpa_user/vduse_dev.c
> index 4dea4d6a3855..49a231bdf948 100644
> --- a/drivers/vdpa/vdpa_user/vduse_dev.c
> +++ b/drivers/vdpa/vdpa_user/vduse_dev.c
> @@ -1882,11 +1882,11 @@ static long vduse_dev_compat_ioctl(struct file *file, 
> unsigned int cmd,
>               break;
>       }
>       default:
> -             ret = -ENOIOCTLCMD;
> -             break;
> +             return vduse_dev_ioctl(file, cmd,
> +                                    (unsigned long)compat_ptr(arg));
>       }
>  
> -     return vduse_dev_ioctl(file, cmd, (unsigned long)compat_ptr(arg));
> +     return ret;
>  }
>  #else
>  #define vduse_dev_compat_ioctl compat_ptr_ioctl
> 
> ---
> base-commit: d7808b37da0a619cf1fa541c2384e783fecc2480
> 
> Best regards,
> -- 
> Linfeng Sun <[email protected]>


Reply via email to