Re: [PATCH v2 0/4] driver core: generalize driver_override infrastructure

From: Gui-Dong Han

Date: Tue Mar 03 2026 - 08:08:43 EST


On Tue, Mar 3, 2026 at 7:57 PM Danilo Krummrich <dakr@xxxxxxxxxx> wrote:
>
> Currently, there are 12 busses (including platform and PCI) that duplicate the
> driver_override logic for their individual devices.
>
> All of them seem to be prone to the bug described in [1].
>
> While this could be solved for every bus individually using a separate lock,
> solving this in the driver-core generically results in less (and cleaner)
> changes overall.
>
> Thus, move driver_override to struct device, provide corresponding accessors for
> busses and handle locking with a separate lock internally.
>
> In particular, add device_set_driver_override(), device_has_driver_override(),
> device_match_driver_override() and a helper, DEVICE_ATTR_DRIVER_OVERRIDE(), to
> declare the corresponding sysfs store() and show() callbacks.

Hi Danilo,

Thanks for the v2. The code looks good and the bus_type approach is
much cleaner.

Just a minor note on the commit messages for the cover letter and
patch 1: they still mention adding the DEVICE_ATTR_DRIVER_OVERRIDE()
helper, even though it was correctly dropped in this version.

Thanks.

>
> Until all busses have migrated, keep driver_set_override() in place.
>
> Note that we can't use the device lock for the reasons described in [2].
>
> This patch series includes the migration of the platform bus; patches for all
> other affected busses still need to be extracted as a follow-up of the WIP
> treewide patch in [3].
>
> [1] https://bugzilla.kernel.org/show_bug.cgi?id=220789
> [2] https://lore.kernel.org/driver-core/DGRGTIRHA62X.3RY09D9SOK77P@xxxxxxxxxx/
> [3] https://git.kernel.org/pub/scm/linux/kernel/git/dakr/linux.git/log/?h=driver_override
>
> Changes in v2:
> - Drop DEVICE_ATTR_DRIVER_OVERRIDE() and make driver_override a
> struct bus_type feature instead.
> - Add driver_override documentation in .../driver-model/binding.rst.
> - Move kfree(dev->driver_override.name) before release().
> - hwmon: axi-fan: Use NULL instead of dev_name() in
> devm_request_threaded_irq().
>
> Danilo Krummrich (4):
> driver core: generalize driver_override in struct device
> docs: driver-model: document driver_override
> hwmon: axi-fan: don't use driver_override as IRQ name
> driver core: platform: use generic driver_override infrastructure
>
> .../driver-api/driver-model/binding.rst | 48 +++++++++++++++
> arch/sh/drivers/platform_early.c | 6 +-
> drivers/base/bus.c | 43 ++++++++++++-
> drivers/base/core.c | 2 +
> drivers/base/dd.c | 60 +++++++++++++++++++
> drivers/base/platform.c | 37 ++----------
> drivers/bus/simple-pm-bus.c | 4 +-
> drivers/clk/imx/clk-scu.c | 3 +-
> drivers/hwmon/axi-fan-control.c | 2 +-
> drivers/slimbus/qcom-ngd-ctrl.c | 6 +-
> include/linux/device.h | 54 +++++++++++++++++
> include/linux/device/bus.h | 4 ++
> include/linux/platform_device.h | 5 --
> sound/soc/samsung/i2s.c | 6 +-
> 14 files changed, 228 insertions(+), 52 deletions(-)
>
>
> base-commit: 11439c4635edd669ae435eec308f4ab8a0804808
> --
> 2.53.0
>