Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

usb-proxy incompatible with Linux Kernel 5.7+ #5905

Closed
neowutran opened this issue Jun 25, 2020 · 6 comments
Closed

usb-proxy incompatible with Linux Kernel 5.7+ #5905

neowutran opened this issue Jun 25, 2020 · 6 comments
Labels
C: kernel P: default Priority: default. Default priority for new issues, to be replaced given sufficient information. R: upstream issue Resolution: This issue pertains to software that the Qubes OS Project does not develop or control. T: bug Type: bug report. A problem or defect resulting in unintended behavior in something that exists.

Comments

@neowutran
Copy link

Qubes OS version
R4.0, testing repository

Affected component(s) or functionality
USB Proxy

Brief summary
Unable to pass USB device to others qubes when using Linux Kernel 5.7.4-1

To Reproduce
Use testing repository for R4.0. Upgrade kernel. Try to pass a usb device to another qubes

Expected behavior
Work as good as with Kernel < 5.7

Actual behavior
dom0: display an error popup "No device info received, connection failed, check backend side for details"
sys-usb journalctl: /usr/lib/qubes/usb-export: line 95: echo: Write Error: No such device

Maybe related to this part of the code (tested nothing, just a think)

SYS_USB_DEVICES=/sys/bus/usb/devices
SYS_USBIP_HOST=/sys/bus/usb/drivers/usbip-host

# From /usr/include/linux/usbip.h
SDEV_ST_AVAILABLE=1
SDEV_ST_USED=2
SDEV_ST_ERROR=3

Solutions you've tried
Switch back to older kernel version

@neowutran neowutran added P: default Priority: default. Default priority for new issues, to be replaced given sufficient information. T: bug Type: bug report. A problem or defect resulting in unintended behavior in something that exists. labels Jun 25, 2020
@neowutran
Copy link
Author

Never mind, seems to be a duplicate of #3612

@neowutran
Copy link
Author

In fact, i am unsure that it is really a duplicate. Sorry, I reopen it and let you decide

@neowutran neowutran reopened this Jun 25, 2020
@m-v-b
Copy link

m-v-b commented Jun 28, 2020

This issue was reported to the Linux kernel's Bugzilla instance by another person using usbip. Here is a link to the bug report.

As I noted in my comment on the bug report page, reverting 5 commits appears to resolve this issue for the time being.

@andrewdavidwong
Copy link
Member

It sounds like this might be an upstream bug.

@m-v-b
Copy link

m-v-b commented Jul 10, 2020

@andrewdavidwong, I confirm that this is an upstream bug, but it has not received attention from upstream yet.

@andrewdavidwong
Copy link
Member

Closing as "not our bug." If you believe this is a mistake, please leave a comment, and we'll be happy to take another look. Thank you.

@andrewdavidwong andrewdavidwong added the R: upstream issue Resolution: This issue pertains to software that the Qubes OS Project does not develop or control. label Jul 11, 2020
fengguang pushed a commit to 0day-ci/linux that referenced this issue Aug 10, 2020
Commit 88b7381 ("USB: Select better matching USB drivers when
available") introduced the use of a "match" function to select a
non-generic/better driver for a particular USB device. This
unfortunately breaks the operation of usbip in general, as reported in
the kernel bugzilla with bug 208267 (linked below).

Upon inspecting the aforementioned commit, one can observe that the
original code in the usb_device_match function used to return 1
unconditionally, but the aforementioned commit makes the usb_device_match
function use identifier tables and "match" virtual functions, if either of
them are available.

Hence, this commit implements a match function for usbip that
unconditionally returns true to ensure that usbip is functional again.

This change has been verified to restore usbip functionality, with a
v5.7.y kernel on an up-to-date version of Qubes OS 4.0, which uses
usbip to redirect USB devices between VMs.

Thanks to Jonathan Dieter for the effort in bisecting this issue down
to the aforementioned commit.

Fixes: 88b7381 ("USB: Select better matching USB drivers when available")
Link: https://bugzilla.kernel.org/show_bug.cgi?id=208267
Link: https://bugzilla.redhat.com/show_bug.cgi?id=1856443
Link: QubesOS/qubes-issues#5905
Signed-off-by: M. Vefa Bicakci <[email protected]>
Cc: <[email protected]> # 5.7
Cc: Valentina Manea <[email protected]>
Cc: Shuah Khan <[email protected]>
Cc: Greg Kroah-Hartman <[email protected]>
Cc: Bastien Nocera <[email protected]>
Cc: Alan Stern <[email protected]>
ruscur pushed a commit to ruscur/linux that referenced this issue Aug 19, 2020
Commit 88b7381 ("USB: Select better matching USB drivers when
available") introduced the use of a "match" function to select a
non-generic/better driver for a particular USB device. This
unfortunately breaks the operation of usbip in general, as reported in
the kernel bugzilla with bug 208267 (linked below).

Upon inspecting the aforementioned commit, one can observe that the
original code in the usb_device_match function used to return 1
unconditionally, but the aforementioned commit makes the usb_device_match
function use identifier tables and "match" virtual functions, if either of
them are available.

Hence, this commit implements a match function for usbip that
unconditionally returns true to ensure that usbip is functional again.

This change has been verified to restore usbip functionality, with a
v5.7.y kernel on an up-to-date version of Qubes OS 4.0, which uses
usbip to redirect USB devices between VMs.

Thanks to Jonathan Dieter for the effort in bisecting this issue down
to the aforementioned commit.

Fixes: 88b7381 ("USB: Select better matching USB drivers when available")
Link: https://bugzilla.kernel.org/show_bug.cgi?id=208267
Link: https://bugzilla.redhat.com/show_bug.cgi?id=1856443
Link: QubesOS/qubes-issues#5905
Signed-off-by: M. Vefa Bicakci <[email protected]>
Cc: <[email protected]> # 5.7
Cc: Valentina Manea <[email protected]>
Cc: Alan Stern <[email protected]>
Reviewed-by: Bastien Nocera <[email protected]>
Reviewed-by: Shuah Khan <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
woodsts pushed a commit to woodsts/linux-stable that referenced this issue Sep 3, 2020
commit 7a2f297 upstream.

Commit 88b7381 ("USB: Select better matching USB drivers when
available") introduced the use of a "match" function to select a
non-generic/better driver for a particular USB device. This
unfortunately breaks the operation of usbip in general, as reported in
the kernel bugzilla with bug 208267 (linked below).

Upon inspecting the aforementioned commit, one can observe that the
original code in the usb_device_match function used to return 1
unconditionally, but the aforementioned commit makes the usb_device_match
function use identifier tables and "match" virtual functions, if either of
them are available.

Hence, this commit implements a match function for usbip that
unconditionally returns true to ensure that usbip is functional again.

This change has been verified to restore usbip functionality, with a
v5.7.y kernel on an up-to-date version of Qubes OS 4.0, which uses
usbip to redirect USB devices between VMs.

Thanks to Jonathan Dieter for the effort in bisecting this issue down
to the aforementioned commit.

Fixes: 88b7381 ("USB: Select better matching USB drivers when available")
Link: https://bugzilla.kernel.org/show_bug.cgi?id=208267
Link: https://bugzilla.redhat.com/show_bug.cgi?id=1856443
Link: QubesOS/qubes-issues#5905
Signed-off-by: M. Vefa Bicakci <[email protected]>
Cc: <[email protected]> # 5.7
Cc: Valentina Manea <[email protected]>
Cc: Alan Stern <[email protected]>
Reviewed-by: Bastien Nocera <[email protected]>
Reviewed-by: Shuah Khan <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
jackpot51 pushed a commit to pop-os/linux that referenced this issue Oct 19, 2020
BugLink: https://bugs.launchpad.net/bugs/1894956

commit 7a2f297 upstream.

Commit 88b7381 ("USB: Select better matching USB drivers when
available") introduced the use of a "match" function to select a
non-generic/better driver for a particular USB device. This
unfortunately breaks the operation of usbip in general, as reported in
the kernel bugzilla with bug 208267 (linked below).

Upon inspecting the aforementioned commit, one can observe that the
original code in the usb_device_match function used to return 1
unconditionally, but the aforementioned commit makes the usb_device_match
function use identifier tables and "match" virtual functions, if either of
them are available.

Hence, this commit implements a match function for usbip that
unconditionally returns true to ensure that usbip is functional again.

This change has been verified to restore usbip functionality, with a
v5.7.y kernel on an up-to-date version of Qubes OS 4.0, which uses
usbip to redirect USB devices between VMs.

Thanks to Jonathan Dieter for the effort in bisecting this issue down
to the aforementioned commit.

Fixes: 88b7381 ("USB: Select better matching USB drivers when available")
Link: https://bugzilla.kernel.org/show_bug.cgi?id=208267
Link: https://bugzilla.redhat.com/show_bug.cgi?id=1856443
Link: QubesOS/qubes-issues#5905
Signed-off-by: M. Vefa Bicakci <[email protected]>
Cc: <[email protected]> # 5.7
Cc: Valentina Manea <[email protected]>
Cc: Alan Stern <[email protected]>
Reviewed-by: Bastien Nocera <[email protected]>
Reviewed-by: Shuah Khan <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>

Signed-off-by: Paolo Pisati <[email protected]>
holesch pushed a commit to holesch/usbip-backports that referenced this issue Sep 21, 2023
Commit 88b7381a939d ("USB: Select better matching USB drivers when
available") introduced the use of a "match" function to select a
non-generic/better driver for a particular USB device. This
unfortunately breaks the operation of usbip in general, as reported in
the kernel bugzilla with bug 208267 (linked below).

Upon inspecting the aforementioned commit, one can observe that the
original code in the usb_device_match function used to return 1
unconditionally, but the aforementioned commit makes the usb_device_match
function use identifier tables and "match" virtual functions, if either of
them are available.

Hence, this commit implements a match function for usbip that
unconditionally returns true to ensure that usbip is functional again.

This change has been verified to restore usbip functionality, with a
v5.7.y kernel on an up-to-date version of Qubes OS 4.0, which uses
usbip to redirect USB devices between VMs.

Thanks to Jonathan Dieter for the effort in bisecting this issue down
to the aforementioned commit.

Fixes: 88b7381a939d ("USB: Select better matching USB drivers when available")
Link: https://bugzilla.kernel.org/show_bug.cgi?id=208267
Link: https://bugzilla.redhat.com/show_bug.cgi?id=1856443
Link: QubesOS/qubes-issues#5905
Signed-off-by: M. Vefa Bicakci <[email protected]>
Cc: <[email protected]> # 5.7
Cc: Valentina Manea <[email protected]>
Cc: Alan Stern <[email protected]>
Reviewed-by: Bastien Nocera <[email protected]>
Reviewed-by: Shuah Khan <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C: kernel P: default Priority: default. Default priority for new issues, to be replaced given sufficient information. R: upstream issue Resolution: This issue pertains to software that the Qubes OS Project does not develop or control. T: bug Type: bug report. A problem or defect resulting in unintended behavior in something that exists.
Projects
None yet
Development

No branches or pull requests

3 participants