Re: [PATCH 1/2] usbip: Fix seqnum sign extension issue in vhci_tx_urb

From: Shuah Khan
Date: Thu Jan 09 2025 - 11:02:47 EST


On 1/3/25 08:18, xndcn wrote:
Thanks.

How did you find the problem?
Why does it make sense to cast it to u32?

After running with usbip enough time, I happened to see logs like this:
[ 293.863125] vhci_hcd vhci_hcd.0: Device attached
[ 294.081110] usb 1-1: new high-speed USB device number 2 using vhci_hcd
[ 294.193163] usb 1-1: SetAddress Request (2) to port 0
[ 294.204334] vhci_hcd: cannot find a urb of seqnum 2147483648 max seqnum -2147483648
[ 294.204850] vhci_hcd: stop threads
[ 294.204851] vhci_hcd: release socket
[ 294.204853] vhci_hcd: disconnect device

Then I notice that on 64bit platform, when
atomic_inc_return(&vhci_hcd->seqnum) returns (2147483647 + 1, or
0x80000000),
priv->seqnum (which is unsigned long, i.e. u64 on 64bit) will be
extends to 0xffffffff80000000
So we can fix the issue by cast it to u32.


Can you send me the dmesg without and with your patch?

thanks,
-- Shuah