Re: [PATCH] vduse: return compat ioctl results directly
From: Michael S. Tsirkin
Date: Tue Sep 08 2026 - 04:48:29 EST
On Tue, Sep 08, 2026 at 10:08:46AM +0200, Arnd Bergmann wrote:
> On Tue, Sep 8, 2026, at 09:57, Michael S. Tsirkin wrote:
> > 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 <linfeng.sun.dev@xxxxxxxxx>
> >
> > indeed, I will apply.
>
> The fix looks correct to me, thanks!
>
> > But ... how was the original patch working then? Arnd, what gives?
>
> It looks I either broke it during refactoring from two functions
> into one, or I just didn't do it right in the first place.
>
> I did write in the extra patch text
>
> | The code is directly copied from the native ioctl handler, but I
> | did not test this with actual x86-32 userspace, so please review
> | carefully.
>
> but obviously should have caught this one myself since it is a much
> less subtle bug than the one I was trying to fix in the first place.
>
> Arnd
Should teach me not to apply untested code. No amount of
careful review replaces testing)
--
MST