Accepting request 863874 from home:DarkWav
Add 0001-fix-descriptor-parsing.patch to fix detection of some devices. Some devices, including my galaxy s7 stopped being detected after the libusb 1.0.24 update. After applying this patch from upstream it works fine again. If you have any further suggestions for the patch let me know. OBS-URL: https://build.opensuse.org/request/show/863874 OBS-URL: https://build.opensuse.org/package/show/hardware/libusb-1_0?expand=0&rev=59
This commit is contained in:
parent
8e72b70ee8
commit
4a21aed10f
44
0001-fix-descriptor-parsing.patch
Normal file
44
0001-fix-descriptor-parsing.patch
Normal file
@ -0,0 +1,44 @@
|
||||
From f6d2cb561402c3b6d3627c0eb89e009b503d9067 Sun 17 01 11:38:45 2021
|
||||
From: Simon Vogl <simon.vogl@gmx.net>
|
||||
Date: Sun, 17 Jan 2021 11:38:45 UTC
|
||||
Subject: [PATCH] Fix USB Device enumeration
|
||||
|
||||
This patch fixes a regression introduced in libusb 1.0.24 that prevents certain devices like smartphones from being detected.
|
||||
|
||||
diff --git a/libusb/os/linux_usbfs.c b/libusb/os/linux_usbfs.c
|
||||
index fb2ed53a..4d2dc8d6 100644
|
||||
--- a/libusb/os/linux_usbfs.c
|
||||
+++ b/libusb/os/linux_usbfs.c
|
||||
@@ -641,7 +641,12 @@ static int seek_to_next_config(struct libusb_context *ctx,
|
||||
uint8_t *buffer, size_t len)
|
||||
{
|
||||
struct usbi_descriptor_header *header;
|
||||
- int offset = 0;
|
||||
+ int offset;
|
||||
+
|
||||
+ /* Start seeking past the config descriptor */
|
||||
+ offset = LIBUSB_DT_CONFIG_SIZE;
|
||||
+ buffer += LIBUSB_DT_CONFIG_SIZE;
|
||||
+ len -= LIBUSB_DT_CONFIG_SIZE;
|
||||
|
||||
while (len > 0) {
|
||||
if (len < 2) {
|
||||
@@ -718,7 +723,7 @@ static int parse_config_descriptors(struct libusb_device *dev)
|
||||
}
|
||||
|
||||
if (priv->sysfs_dir) {
|
||||
- /*
|
||||
+ /*
|
||||
* In sysfs wTotalLength is ignored, instead the kernel returns a
|
||||
* config descriptor with verified bLength fields, with descriptors
|
||||
* with an invalid bLength removed.
|
||||
@@ -727,8 +732,7 @@ static int parse_config_descriptors(struct libusb_device *dev)
|
||||
int offset;
|
||||
|
||||
if (num_configs > 1 && idx < num_configs - 1) {
|
||||
- offset = seek_to_next_config(ctx, buffer + LIBUSB_DT_CONFIG_SIZE,
|
||||
- remaining - LIBUSB_DT_CONFIG_SIZE);
|
||||
+ offset = seek_to_next_config(ctx, buffer, remaining);
|
||||
if (offset < 0)
|
||||
return offset;
|
||||
sysfs_config_len = (uint16_t)offset;
|
@ -1,3 +1,8 @@
|
||||
-------------------------------------------------------------------
|
||||
Sun Jan 17 11:38:45 UTC 2021 - Simon Vogl <simon.vogl@gmx.net>
|
||||
|
||||
- Add 0001-fix-descriptor-parsing.patch to fix detection of some devices.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Dec 10 19:18:02 UTC 2020 - Martin Hauke <mardnh@gmx.de>
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package libusb-1_0
|
||||
#
|
||||
# Copyright (c) 2020 SUSE LLC
|
||||
# Copyright (c) 2021 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -27,6 +27,8 @@ Group: System/Hardware
|
||||
URL: http://libusb.info/
|
||||
Source: https://github.com/libusb/libusb/releases/download/v%{version}/libusb-%{version}.tar.bz2
|
||||
Source1: baselibs.conf
|
||||
# PATCH-FIX-UPSTREAM
|
||||
Patch1: 0001-fix-descriptor-parsing.patch
|
||||
BuildRequires: dos2unix
|
||||
BuildRequires: pkgconfig
|
||||
BuildRequires: pkgconfig(libudev)
|
||||
@ -51,7 +53,7 @@ Requires: libusb-1_0-0 = %{version}
|
||||
Libusb is a library that allows userspace access to USB devices.
|
||||
|
||||
%prep
|
||||
%setup -q -n %{_name}-%{version}
|
||||
%autosetup -p1 -n %{_name}-%{version}
|
||||
dos2unix NEWS
|
||||
|
||||
%build
|
||||
|
Loading…
Reference in New Issue
Block a user