|
Revision tags: v6.15, v6.15-rc7, v6.15-rc6, v6.15-rc5, v6.15-rc4, v6.15-rc3, v6.15-rc2, v6.15-rc1, v6.14, v6.14-rc7, v6.14-rc6, v6.14-rc5, v6.14-rc4, v6.14-rc3, v6.14-rc2, v6.14-rc1, v6.13, v6.13-rc7, v6.13-rc6, v6.13-rc5, v6.13-rc4, v6.13-rc3 |
|
| #
e9509b49 |
| 12-Dec-2024 |
Zijun Hu <[email protected]> |
USB: Optimize goto logic in API usb_register_driver()
usb_register_driver() uses complex goto statements to handle simple error cases, move down the goto label 'out' a bit to
- Simplify goto logic
USB: Optimize goto logic in API usb_register_driver()
usb_register_driver() uses complex goto statements to handle simple error cases, move down the goto label 'out' a bit to
- Simplify goto logic - Leverage pr_err() prompt for driver registering failure.
Signed-off-by: Zijun Hu <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.13-rc2, v6.13-rc1, v6.12 |
|
| #
d6fa15bb |
| 13-Nov-2024 |
Greg Kroah-Hartman <[email protected]> |
USB: make to_usb_device_driver() use container_of_const()
Turns out that we have some const pointers being passed to to_usb_device_driver() but were not catching this. Change the macro to properly
USB: make to_usb_device_driver() use container_of_const()
Turns out that we have some const pointers being passed to to_usb_device_driver() but were not catching this. Change the macro to properly propagate the const-ness of the pointer so that we will notice when we try to write to memory that we shouldn't be writing to.
This requires fixing up the usb_driver_applicable() function as well, because it can handle a const * to struct usb_driver.
Cc: Johan Hovold <[email protected]> Cc: Alan Stern <[email protected]> Cc: Grant Grundler <[email protected]> Cc: Yajun Deng <[email protected]> Cc: Oliver Neukum <[email protected]> Cc: Douglas Anderson <[email protected]> Cc: [email protected] Link: https://lore.kernel.org/r/2024111342-lagoon-reapprove-5e49@gregkh Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
| #
2f3aab7a |
| 13-Nov-2024 |
Greg Kroah-Hartman <[email protected]> |
USB: make to_usb_driver() use container_of_const()
Turns out that we have some const pointers being passed to to_usb_driver() but were not catching this. Change the macro to properly propagate the
USB: make to_usb_driver() use container_of_const()
Turns out that we have some const pointers being passed to to_usb_driver() but were not catching this. Change the macro to properly propagate the const-ness of the pointer so that we will notice when we try to write to memory that we shouldn't be writing to.
This requires fixing up the usb_match_dynamic_id() function as well, because it can handle a const * to struct usb_driver.
Cc: Johan Hovold <[email protected]> Cc: Alan Stern <[email protected]> Cc: Grant Grundler <[email protected]> Cc: Yajun Deng <[email protected]> Cc: Oliver Neukum <[email protected]> Cc: Douglas Anderson <[email protected]> Cc: [email protected] Link: https://lore.kernel.org/r/2024111339-shaky-goldsmith-b233@gregkh Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
| #
81f5c72d |
| 13-Nov-2024 |
Greg Kroah-Hartman <[email protected]> |
USB: properly lock dynamic id list when showing an id
When walking the list of dynamic ids for a driver, no lock was being held, which meant that an id could be removed or added while the list was b
USB: properly lock dynamic id list when showing an id
When walking the list of dynamic ids for a driver, no lock was being held, which meant that an id could be removed or added while the list was being iterated. Fix this up by properly grabing the lock while we walk the list.
Reported-by: Alan Stern <[email protected]> Cc: [email protected] Link: https://lore.kernel.org/r/2024111324-tubby-facecloth-d4a0@gregkh Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
| #
0b3144da |
| 13-Nov-2024 |
Greg Kroah-Hartman <[email protected]> |
USB: make single lock for all usb dynamic id lists
There are a number of places where we accidentally pass in a constant structure to later cast it off to a dynamic one, and then attempt to grab a l
USB: make single lock for all usb dynamic id lists
There are a number of places where we accidentally pass in a constant structure to later cast it off to a dynamic one, and then attempt to grab a lock on it, which is not a good idea. To help resolve this, move the dynamic id lock out of the dynamic id structure for the driver and into one single lock for all USB dynamic ids. As this lock should never have any real contention (it's only every accessed when a device is added or removed, which is always serialized) there should not be any difference except for some memory savings.
Note, this just converts the existing use of the dynamic id lock to the new static lock, there is one place that is accessing the dynamic id list without grabbing the lock, that will be fixed up in a follow-on change.
Cc: Johan Hovold <[email protected]> Cc: Herve Codina <[email protected]> Cc: Rob Herring <[email protected]> Cc: Alan Stern <[email protected]> Cc: Grant Grundler <[email protected]> Cc: Oliver Neukum <[email protected]> Cc: Yajun Deng <[email protected]> Cc: Douglas Anderson <[email protected]> Cc: [email protected] Link: https://lore.kernel.org/r/2024111322-kindly-finalist-d247@gregkh Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.12-rc7, v6.12-rc6, v6.12-rc5, v6.12-rc4, v6.12-rc3, v6.12-rc2, v6.12-rc1, v6.11, v6.11-rc7, v6.11-rc6, v6.11-rc5, v6.11-rc4, v6.11-rc3, v6.11-rc2, v6.11-rc1, v6.10, v6.10-rc7 |
|
| #
a5f81642 |
| 06-Jul-2024 |
Kerem Karabay <[email protected]> |
USB: core: add 'shutdown' callback to usb_driver
Currently there is no standardized method for USB drivers to handle shutdown events. This patch simplifies running code on shutdown for USB devices b
USB: core: add 'shutdown' callback to usb_driver
Currently there is no standardized method for USB drivers to handle shutdown events. This patch simplifies running code on shutdown for USB devices by adding a shutdown callback to usb_driver.
Signed-off-by: Kerem Karabay <[email protected]> Signed-off-by: Aditya Garg <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
| #
d69d8048 |
| 01-Jul-2024 |
Greg Kroah-Hartman <[email protected]> |
driver core: have match() callback in struct bus_type take a const *
In the match() callback, the struct device_driver * should not be changed, so change the function callback to be a const *. This
driver core: have match() callback in struct bus_type take a const *
In the match() callback, the struct device_driver * should not be changed, so change the function callback to be a const *. This is one step of many towards making the driver core safe to have struct device_driver in read-only memory.
Because the match() callback is in all busses, all busses are modified to handle this properly. This does entail switching some container_of() calls to container_of_const() to properly handle the constant *.
For some busses, like PCI and USB and HV, the const * is cast away in the match callback as those busses do want to modify those structures at this point in time (they have a local lock in the driver structure.) That will have to be changed in the future if they wish to have their struct device * in read-only-memory.
Cc: Rafael J. Wysocki <[email protected]> Reviewed-by: Alex Elder <[email protected]> Acked-by: Sumit Garg <[email protected]> Link: https://lore.kernel.org/r/2024070136-wrongdoer-busily-01e8@gregkh Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.10-rc6, v6.10-rc5, v6.10-rc4, v6.10-rc3, v6.10-rc2, v6.10-rc1, v6.9, v6.9-rc7, v6.9-rc6, v6.9-rc5, v6.9-rc4, v6.9-rc3, v6.9-rc2, v6.9-rc1, v6.8, v6.8-rc7, v6.8-rc6, v6.8-rc5, v6.8-rc4, v6.8-rc3, v6.8-rc2, v6.8-rc1 |
|
| #
7626c52b |
| 18-Jan-2024 |
Oliver Neukum <[email protected]> |
usb: usb_autopm_get_interface use modern helper
PM core now gives us a primitive that does not touch the counter in an error case. Use it.
Signed-off-by: Oliver Neukum <[email protected]> Acked-by:
usb: usb_autopm_get_interface use modern helper
PM core now gives us a primitive that does not touch the counter in an error case. Use it.
Signed-off-by: Oliver Neukum <[email protected]> Acked-by: Alan Stern <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.7 |
|
| #
49a78b05 |
| 04-Jan-2024 |
Yajun Deng <[email protected]> |
USB: core: Use device_driver directly in struct usb_driver and usb_device_driver
There is usbdrv_wrap in struct usb_driver and usb_device_driver, it contains device_driver and for_devices. for_devic
USB: core: Use device_driver directly in struct usb_driver and usb_device_driver
There is usbdrv_wrap in struct usb_driver and usb_device_driver, it contains device_driver and for_devices. for_devices is used to distinguish between device drivers and interface drivers.
Like the is_usb_device(), it tests the type of the device. We can test that if the probe of device_driver is equal to usb_probe_device in is_usb_device_driver(), and then the struct usbdrv_wrap is no longer needed.
Clean up struct usbdrv_wrap, use device_driver directly in struct usb_driver and usb_device_driver. This makes the code cleaner.
Signed-off-by: Yajun Deng <[email protected]> Acked-by: Alan Stern <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.7-rc8, v6.7-rc7, v6.7-rc6, v6.7-rc5, v6.7-rc4 |
|
| #
c2d95fcf |
| 01-Dec-2023 |
Douglas Anderson <[email protected]> |
usb: core: Don't force USB generic_subclass drivers to define probe()
There's no real reason that subclassed USB drivers _need_ to define probe() since they might want to subclass for some other rea
usb: core: Don't force USB generic_subclass drivers to define probe()
There's no real reason that subclassed USB drivers _need_ to define probe() since they might want to subclass for some other reason. Make it optional to define probe() if we're a generic_subclass.
Signed-off-by: Douglas Anderson <[email protected]> Reviewed-by: Grant Grundler <[email protected]> Reviewed-by: Alan Stern <[email protected]> Link: https://lore.kernel.org/r/20231201102946.v2.1.I7ea0dd55ee2acdb48b0e6d28c1a704ab2c29206f@changeid Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.7-rc3, v6.7-rc2, v6.7-rc1, v6.6, v6.6-rc7, v6.6-rc6, v6.6-rc5, v6.6-rc4, v6.6-rc3, v6.6-rc2, v6.6-rc1, v6.5, v6.5-rc7, v6.5-rc6, v6.5-rc5, v6.5-rc4, v6.5-rc3, v6.5-rc2, v6.5-rc1, v6.4, v6.4-rc7, v6.4-rc6, v6.4-rc5, v6.4-rc4, v6.4-rc3, v6.4-rc2, v6.4-rc1, v6.3, v6.3-rc7, v6.3-rc6, v6.3-rc5, v6.3-rc4, v6.3-rc3 |
|
| #
9d11b134 |
| 13-Mar-2023 |
Greg Kroah-Hartman <[email protected]> |
USB: mark all struct bus_type as const
Now that the driver core can properly handle constant struct bus_type, move all of the USB subsystem struct bus_type structures as const, placing them into rea
USB: mark all struct bus_type as const
Now that the driver core can properly handle constant struct bus_type, move all of the USB subsystem struct bus_type structures as const, placing them into read-only memory which can not be modified at runtime.
Cc: Johan Hovold <[email protected]> Cc: Evan Green <[email protected]> Cc: Alan Stern <[email protected]> Cc: [email protected] Acked-by: Heikki Krogerus <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.3-rc2, v6.3-rc1, v6.2, v6.2-rc8, v6.2-rc7, v6.2-rc6, v6.2-rc5, v6.2-rc4 |
|
| #
2a81ada3 |
| 11-Jan-2023 |
Greg Kroah-Hartman <[email protected]> |
driver core: make struct bus_type.uevent() take a const *
The uevent() callback in struct bus_type should not be modifying the device that is passed into it, so mark it as a const * and propagate th
driver core: make struct bus_type.uevent() take a const *
The uevent() callback in struct bus_type should not be modifying the device that is passed into it, so mark it as a const * and propagate the function signature changes out into all relevant subsystems that use this callback.
Acked-by: Rafael J. Wysocki <[email protected]> Acked-by: Hans de Goede <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v6.2-rc3, v6.2-rc2, v6.2-rc1, v6.1, v6.1-rc8, v6.1-rc7, v6.1-rc6, v6.1-rc5, v6.1-rc4, v6.1-rc3, v6.1-rc2, v6.1-rc1, v6.0, v6.0-rc7, v6.0-rc6, v6.0-rc5, v6.0-rc4, v6.0-rc3, v6.0-rc2, v6.0-rc1, v5.19, v5.19-rc8, v5.19-rc7 |
|
| #
a7a9f4c0 |
| 16-Jul-2022 |
Jilin Yuan <[email protected]> |
usb/core: fix repeated words in comments
Delete the redundant word 'the'.
Signed-off-by: Jilin Yuan <[email protected]> Link: https://lore.kernel.org/r/[email protected]
usb/core: fix repeated words in comments
Delete the redundant word 'the'.
Signed-off-by: Jilin Yuan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v5.19-rc6, v5.19-rc5, v5.19-rc4, v5.19-rc3, v5.19-rc2, v5.19-rc1, v5.18, v5.18-rc7, v5.18-rc6, v5.18-rc5, v5.18-rc4 |
|
| #
9671d550 |
| 21-Apr-2022 |
Evan Green <[email protected]> |
USB: core: Disable remote wakeup for freeze/quiesce
The PM_EVENT_FREEZE and PM_EVENT_QUIESCE messages should cause the device to stop generating interrupts. USB core was previously allowing devices
USB: core: Disable remote wakeup for freeze/quiesce
The PM_EVENT_FREEZE and PM_EVENT_QUIESCE messages should cause the device to stop generating interrupts. USB core was previously allowing devices that were already runtime suspended to keep remote wakeup enabled if they had gone down that way. This violates the contract with pm, and can potentially cause MSI interrupts to be lost.
Change that so that if a device is runtime suspended with remote wakeups enabled, it will be resumed to ensure remote wakeup is always disabled across a freeze.
Acked-by: Alan Stern <[email protected]> Signed-off-by: Evan Green <[email protected]> Link: https://lore.kernel.org/r/20220421103751.v3.1.I2c636c4decc358f5e6c27b810748904cc69beada@changeid Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v5.18-rc3, v5.18-rc2, v5.18-rc1, v5.17, v5.17-rc8, v5.17-rc7, v5.17-rc6, v5.17-rc5, v5.17-rc4, v5.17-rc3, v5.17-rc2, v5.17-rc1, v5.16, v5.16-rc8, v5.16-rc7, v5.16-rc6 |
|
| #
b1e9e7eb |
| 13-Dec-2021 |
Razvan Heghedus <[email protected]> |
usb: core: Export usb_device_match_id
Export usb_device_match_id so that it can be used for easily matching an usb_device with a table of IDs.
Signed-off-by: Razvan Heghedus <heghedus.razvan@gmail.
usb: core: Export usb_device_match_id
Export usb_device_match_id so that it can be used for easily matching an usb_device with a table of IDs.
Signed-off-by: Razvan Heghedus <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v5.16-rc5, v5.16-rc4 |
|
| #
9899aa5b |
| 05-Dec-2021 |
Wei Ming Chen <[email protected]> |
usb: core: Fix file path that does not exist
Both driver.c and generic.c are not under drivers/usb/, should be drivers/usb/core/ instead.
Signed-off-by: Wei Ming Chen <[email protected]> Lin
usb: core: Fix file path that does not exist
Both driver.c and generic.c are not under drivers/usb/, should be drivers/usb/core/ instead.
Signed-off-by: Wei Ming Chen <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v5.16-rc3, v5.16-rc2, v5.16-rc1, v5.15, v5.15-rc7, v5.15-rc6, v5.15-rc5, v5.15-rc4, v5.15-rc3, v5.15-rc2, v5.15-rc1, v5.14, v5.14-rc7, v5.14-rc6, v5.14-rc5, v5.14-rc4, v5.14-rc3, v5.14-rc2, v5.14-rc1, v5.13, v5.13-rc7, v5.13-rc6, v5.13-rc5, v5.13-rc4, v5.13-rc3, v5.13-rc2, v5.13-rc1, v5.12, v5.12-rc8, v5.12-rc7, v5.12-rc6, v5.12-rc5, v5.12-rc4 |
|
| #
aaadc6ae |
| 18-Mar-2021 |
Johan Hovold <[email protected]> |
USB: core: rename usb_driver_claim_interface() data parameter
It's been almost twenty years since the interface "private data" pointer was removed in favour of using the driver-data pointer of struc
USB: core: rename usb_driver_claim_interface() data parameter
It's been almost twenty years since the interface "private data" pointer was removed in favour of using the driver-data pointer of struct device.
Let's rename the driver-data parameter of usb_driver_claim_interface() so that it better reflects how it's used.
Signed-off-by: Johan Hovold <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
| #
a2a28c25 |
| 18-Mar-2021 |
Johan Hovold <[email protected]> |
USB: core: drop outdated interface-binding comment
It's been almost twenty years since USB drivers returned a data pointer from their probe routines in order to bind to an interface.
Time to update
USB: core: drop outdated interface-binding comment
It's been almost twenty years since USB drivers returned a data pointer from their probe routines in order to bind to an interface.
Time to update the documentation for usb_driver_claim_interface().
Signed-off-by: Johan Hovold <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v5.12-rc3, v5.12-rc2, v5.12-rc1, v5.12-rc1-dontuse, v5.11, v5.11-rc7, v5.11-rc6, v5.11-rc5, v5.11-rc4, v5.11-rc3, v5.11-rc2, v5.11-rc1, v5.10, v5.10-rc7, v5.10-rc6, v5.10-rc5, v5.10-rc4, v5.10-rc3, v5.10-rc2, v5.10-rc1 |
|
| #
0942d59b |
| 22-Oct-2020 |
Bastien Nocera <[email protected]> |
usbcore: Check both id_table and match() when both available
From: Bastien Nocera <[email protected]>
When a USB device driver has both an id_table and a match() function, make sure to check both t
usbcore: Check both id_table and match() when both available
From: Bastien Nocera <[email protected]>
When a USB device driver has both an id_table and a match() function, make sure to check both to find a match, first matching the id_table, then checking the match() function.
This makes it possible to have module autoloading done through the id_table when devices are plugged in, before checking for further device eligibility in the match() function.
Cc: <[email protected]> # 5.8 Cc: Greg Kroah-Hartman <[email protected]> Cc: Alan Stern <[email protected]> Co-developed-by: M. Vefa Bicakci <[email protected]> Tested-by: Bastien Nocera <[email protected]> Signed-off-by: Bastien Nocera <[email protected]> Signed-off-by: M. Vefa Bicakci <[email protected]> Tested-by: Pan (Pany) YUAN <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v5.9, v5.9-rc8, v5.9-rc7 |
|
| #
3fce3960 |
| 22-Sep-2020 |
M. Vefa Bicakci <[email protected]> |
usbcore/driver: Accommodate usbip
Commit 88b7381a939d ("USB: Select better matching USB drivers when available") inadvertently broke usbip functionality. The commit in question allows USB device dri
usbcore/driver: Accommodate usbip
Commit 88b7381a939d ("USB: Select better matching USB drivers when available") inadvertently broke usbip functionality. The commit in question allows USB device drivers to be explicitly matched with USB devices via the use of driver-provided identifier tables and match functions, which is useful for a specialised device driver to be chosen for a device that can also be handled by another, more generic, device driver.
Prior, the USB device section of usb_device_match() had an unconditional "return 1" statement, which allowed user-space to bind USB devices to the usbip_host device driver, if desired. However, the aforementioned commit changed the default/fallback return value to zero. This breaks device drivers such as usbip_host, so this commit restores the legacy behaviour, but only if a device driver does not have an id_table and a match() function.
In addition, if usb_device_match is called for a device driver and device pair where the device does not match the id_table of the device driver in question, then the device driver will be disqualified for the device. This allows avoiding the default case of "return 1", which prevents undesirable probe() calls to a driver even though its id_table did not match the device.
Finally, this commit changes the specialised-driver-to-generic-driver transition code so that when a device driver returns -ENODEV, a more generic device driver is only considered if the current device driver does not have an id_table and a match() function. This ensures that "generic" drivers such as usbip_host will not be considered specialised device drivers and will not cause the device to be locked in to the generic device driver, when a more specialised device driver could be tried.
All of these changes restore usbip functionality without regressions, ensure that the specialised/generic device driver selection logic works as expected with the usb and apple-mfi-fastcharge drivers, and do not negatively affect the use of devices provided by dummy_hcd.
Fixes: 88b7381a939d ("USB: Select better matching USB drivers when available") Cc: <[email protected]> # 5.8 Cc: Bastien Nocera <[email protected]> Cc: Valentina Manea <[email protected]> Cc: Shuah Khan <[email protected]> Cc: Greg Kroah-Hartman <[email protected]> Cc: Alan Stern <[email protected]> Cc: <[email protected]> Tested-by: Andrey Konovalov <[email protected]> Acked-by: Shuah Khan <[email protected]> Signed-off-by: M. Vefa Bicakci <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
| #
4df30e76 |
| 22-Sep-2020 |
M. Vefa Bicakci <[email protected]> |
usbcore/driver: Fix incorrect downcast
This commit resolves a minor bug in the selection/discovery of more specific USB device drivers for devices that are currently bound to generic USB device driv
usbcore/driver: Fix incorrect downcast
This commit resolves a minor bug in the selection/discovery of more specific USB device drivers for devices that are currently bound to generic USB device drivers.
The bug is related to the way a candidate USB device driver is compared against the generic USB device driver. The code in is_dev_usb_generic_driver() assumes that the device driver in question is a USB device driver by calling to_usb_device_driver(dev->driver) to downcast; however I have observed that this assumption is not always true, through code instrumentation.
This commit avoids the incorrect downcast altogether by comparing the USB device's driver (i.e., dev->driver) to the generic USB device driver directly. This method was suggested by Alan Stern.
This bug was found while investigating Andrey Konovalov's report indicating usbip device driver misbehaviour with the recently merged generic USB device driver selection feature. The report is linked below.
Fixes: d5643d2249b2 ("USB: Fix device driver race") Cc: <[email protected]> # 5.8 Cc: Greg Kroah-Hartman <[email protected]> Cc: Alan Stern <[email protected]> Cc: Bastien Nocera <[email protected]> Cc: Shuah Khan <[email protected]> Cc: Valentina Manea <[email protected]> Cc: <[email protected]> Tested-by: Andrey Konovalov <[email protected]> Signed-off-by: M. Vefa Bicakci <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
| #
aea850cd |
| 22-Sep-2020 |
M. Vefa Bicakci <[email protected]> |
usbcore/driver: Fix specific driver selection
This commit resolves a bug in the selection/discovery of more specific USB device drivers for devices that are currently bound to generic USB device dri
usbcore/driver: Fix specific driver selection
This commit resolves a bug in the selection/discovery of more specific USB device drivers for devices that are currently bound to generic USB device drivers.
The bug is in the logic that determines whether a device currently bound to a generic USB device driver should be re-probed by a more specific USB device driver or not. The code in __usb_bus_reprobe_drivers() used to have the following lines:
if (usb_device_match_id(udev, new_udriver->id_table) == NULL && (!new_udriver->match || new_udriver->match(udev) != 0)) return 0;
ret = device_reprobe(dev);
As the reader will notice, the code checks whether the USB device in consideration matches the identifier table (id_table) of a specific USB device_driver (new_udriver), followed by a similar check, but this time with the USB device driver's match function. However, the match function's return value is not checked correctly. When match() returns zero, it means that the specific USB device driver is *not* applicable to the USB device in question, but the code then goes on to reprobe the device with the new USB device driver under consideration. All this to say, the logic is inverted.
This bug was found by code inspection and instrumentation while investigating the root cause of the issue reported by Andrey Konovalov, where usbip took over syzkaller's virtual USB devices in an undesired manner. The report is linked below.
Fixes: d5643d2249b2 ("USB: Fix device driver race") Cc: <[email protected]> # 5.8 Cc: Greg Kroah-Hartman <[email protected]> Cc: Alan Stern <[email protected]> Cc: Bastien Nocera <[email protected]> Cc: Shuah Khan <[email protected]> Cc: Valentina Manea <[email protected]> Cc: <[email protected]> Tested-by: Andrey Konovalov <[email protected]> Signed-off-by: M. Vefa Bicakci <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v5.9-rc6, v5.9-rc5, v5.9-rc4, v5.9-rc3 |
|
| #
bb0634ec |
| 29-Aug-2020 |
Sergey Shtylyov <[email protected]> |
usb: core: driver: fix stray tabs in error messages
Commit 8bb54ab573ec ("usbcore: add usb_device_driver definition") added the printk() calls with the error massages spoilt due to the stray tabs in
usb: core: driver: fix stray tabs in error messages
Commit 8bb54ab573ec ("usbcore: add usb_device_driver definition") added the printk() calls with the error massages spoilt due to the stray tabs in the middle. Remove these tabs and convert printk() calls to pr_err() for consistency with the other code, while at it.
Fixes: 8bb54ab573ec ("usbcore: add usb_device_driver definition") Signed-off-by: Sergey Shtylyov <[email protected]> Acked-by: Alan Stern <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v5.9-rc2 |
|
| #
d5643d22 |
| 18-Aug-2020 |
Bastien Nocera <[email protected]> |
USB: Fix device driver race
When a new device with a specialised device driver is plugged in, the new driver will be modprobe()'d but the driver core will attach the "generic" driver to the device.
USB: Fix device driver race
When a new device with a specialised device driver is plugged in, the new driver will be modprobe()'d but the driver core will attach the "generic" driver to the device.
After that, nothing will trigger a reprobe when the modprobe()'d device driver has finished initialising, as the device has the "generic" driver attached to it.
Trigger a reprobe ourselves when new specialised drivers get registered.
Fixes: 88b7381a939d ("USB: Select better matching USB drivers when available") Signed-off-by: Bastien Nocera <[email protected]> Cc: stable <[email protected]> Acked-by: Alan Stern <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|
|
Revision tags: v5.9-rc1, v5.8, v5.8-rc7, v5.8-rc6, v5.8-rc5, v5.8-rc4, v5.8-rc3, v5.8-rc2, v5.8-rc1, v5.7, v5.7-rc7, v5.7-rc6, v5.7-rc5, v5.7-rc4, v5.7-rc3, v5.7-rc2, v5.7-rc1, v5.6, v5.6-rc7, v5.6-rc6, v5.6-rc5, v5.6-rc4, v5.6-rc3, v5.6-rc2, v5.6-rc1, v5.5, v5.5-rc7, v5.5-rc6, v5.5-rc5, v5.5-rc4, v5.5-rc3, v5.5-rc2, v5.5-rc1, v5.4, v5.4-rc8, v5.4-rc7, v5.4-rc6, v5.4-rc5, v5.4-rc4 |
|
| #
77419aa4 |
| 16-Oct-2019 |
Bastien Nocera <[email protected]> |
USB: Fallback to generic driver when specific driver fails
If ->probe fails for a device specific driver, ask the driver core to reprobe us, after having flagged the device for the generic driver to
USB: Fallback to generic driver when specific driver fails
If ->probe fails for a device specific driver, ask the driver core to reprobe us, after having flagged the device for the generic driver to be forced.
Signed-off-by: Bastien Nocera <[email protected]> Acked-by: Alan Stern <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
show more ...
|