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 <[email protected]>
>
> 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

Reply via email to