]> www.infradead.org Git - users/dwmw2/linux.git/commit
driver core: have match() callback in struct bus_type take a const *
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 1 Jul 2024 12:07:37 +0000 (14:07 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Jul 2024 13:16:54 +0000 (15:16 +0200)
commitd69d804845985c29ab5be5a4b3b1f4787893daf8
treeda2a783fd130da553c526692669eb847972b86d4
parent6b521fc111a2ad5ead39776960d3d2d289ce0722
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 <rafael@kernel.org>
Reviewed-by: Alex Elder <elder@kernel.org>
Acked-by: Sumit Garg <sumit.garg@linaro.org>
Link: https://lore.kernel.org/r/2024070136-wrongdoer-busily-01e8@gregkh
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
163 files changed:
arch/arm/common/locomo.c
arch/arm/include/asm/hardware/locomo.h
arch/parisc/include/asm/parisc-device.h
arch/parisc/kernel/drivers.c
arch/powerpc/include/asm/ps3.h
arch/powerpc/include/asm/vio.h
arch/powerpc/platforms/ps3/system-bus.c
arch/powerpc/platforms/pseries/ibmebus.c
arch/powerpc/platforms/pseries/vio.c
arch/s390/include/asm/ccwdev.h
arch/sparc/include/asm/vio.h
arch/sparc/kernel/vio.c
drivers/acpi/bus.c
drivers/amba/bus.c
drivers/base/auxiliary.c
drivers/base/base.h
drivers/base/cpu.c
drivers/base/isa.c
drivers/base/platform.c
drivers/bcma/main.c
drivers/bus/fsl-mc/fsl-mc-bus.c
drivers/bus/mhi/ep/main.c
drivers/bus/mhi/host/init.c
drivers/bus/mips_cdmm.c
drivers/bus/moxtet.c
drivers/bus/sunxi-rsb.c
drivers/cdx/cdx.c
drivers/cxl/core/port.c
drivers/cxl/cxl.h
drivers/dax/bus.c
drivers/dma/idxd/bus.c
drivers/eisa/eisa-bus.c
drivers/firewire/core-device.c
drivers/firmware/arm_ffa/bus.c
drivers/firmware/arm_scmi/bus.c
drivers/firmware/google/coreboot_table.c
drivers/fpga/dfl.c
drivers/fsi/fsi-core.c
drivers/gpio/gpiolib.c
drivers/gpu/drm/display/drm_dp_aux_bus.c
drivers/gpu/drm/drm_mipi_dsi.c
drivers/gpu/host1x/bus.c
drivers/greybus/core.c
drivers/hid/hid-core.c
drivers/hid/intel-ish-hid/ishtp/bus.c
drivers/hsi/hsi_core.c
drivers/hv/vmbus_drv.c
drivers/hwtracing/intel_th/core.c
drivers/hwtracing/intel_th/intel_th.h
drivers/i2c/i2c-core-base.c
drivers/i3c/master.c
drivers/input/gameport/gameport.c
drivers/input/rmi4/rmi_bus.c
drivers/input/rmi4/rmi_bus.h
drivers/input/rmi4/rmi_driver.c
drivers/input/rmi4/rmi_driver.h
drivers/input/serio/serio.c
drivers/ipack/ipack.c
drivers/macintosh/macio_asic.c
drivers/mcb/mcb-core.c
drivers/media/pci/bt8xx/bttv-gpio.c
drivers/media/pci/bt8xx/bttv.h
drivers/memstick/core/memstick.c
drivers/mfd/mcp-core.c
drivers/misc/mei/bus.c
drivers/misc/tifm_core.c
drivers/mmc/core/sdio_bus.c
drivers/most/core.c
drivers/net/phy/mdio_bus.c
drivers/net/phy/mdio_device.c
drivers/net/phy/phy_device.c
drivers/ntb/ntb_transport.c
drivers/nvdimm/bus.c
drivers/nvmem/layouts.c
drivers/pci/endpoint/pci-epf-core.c
drivers/pci/pci-driver.c
drivers/pcmcia/ds.c
drivers/peci/core.c
drivers/peci/internal.h
drivers/platform/surface/aggregator/bus.c
drivers/platform/x86/wmi.c
drivers/pnp/driver.c
drivers/rapidio/rio-driver.c
drivers/rpmsg/rpmsg_core.c
drivers/rpmsg/rpmsg_internal.h
drivers/s390/cio/css.c
drivers/s390/cio/css.h
drivers/s390/cio/device.c
drivers/s390/crypto/ap_bus.c
drivers/s390/crypto/ap_bus.h
drivers/scsi/fcoe/fcoe_sysfs.c
drivers/scsi/scsi_sysfs.c
drivers/scsi/scsi_transport_iscsi.c
drivers/sh/maple/maple.c
drivers/siox/siox-core.c
drivers/slimbus/core.c
drivers/soc/qcom/apr.c
drivers/soundwire/bus_type.c
drivers/spi/spi.c
drivers/spmi/spmi.c
drivers/ssb/main.c
drivers/staging/fieldbus/anybuss/anybuss-client.h
drivers/staging/fieldbus/anybuss/host.c
drivers/staging/greybus/gbphy.c
drivers/staging/vc04_services/interface/vchiq_arm/vchiq_bus.c
drivers/staging/vme_user/vme.c
drivers/tc/tc-driver.c
drivers/tee/tee_core.c
drivers/thunderbolt/domain.c
drivers/tty/serdev/core.c
drivers/tty/serial/serial_base_bus.c
drivers/usb/common/ulpi.c
drivers/usb/core/driver.c
drivers/usb/gadget/udc/core.c
drivers/usb/serial/bus.c
drivers/usb/typec/bus.c
drivers/vdpa/vdpa.c
drivers/vfio/mdev/mdev_driver.c
drivers/virtio/virtio.c
drivers/xen/xenbus/xenbus.h
drivers/xen/xenbus/xenbus_probe.c
include/acpi/acpi_bus.h
include/linux/arm_ffa.h
include/linux/cdx/cdx_bus.h
include/linux/device/bus.h
include/linux/dfl.h
include/linux/eisa.h
include/linux/fsi.h
include/linux/fsl/mc.h
include/linux/gameport.h
include/linux/greybus.h
include/linux/hyperv.h
include/linux/i2c.h
include/linux/i3c/device.h
include/linux/maple.h
include/linux/mcb.h
include/linux/mdio.h
include/linux/mhi.h
include/linux/mhi_ep.h
include/linux/moxtet.h
include/linux/nd.h
include/linux/pci-epf.h
include/linux/pci.h
include/linux/phy.h
include/linux/pnp.h
include/linux/rio.h
include/linux/scmi_protocol.h
include/linux/serio.h
include/linux/slimbus.h
include/linux/soc/qcom/apr.h
include/linux/soundwire/sdw_type.h
include/linux/spi/spi.h
include/linux/ssb/ssb.h
include/linux/tc.h
include/linux/tee_drv.h
include/linux/virtio.h
include/scsi/scsi_transport_iscsi.h
include/sound/ac97/codec.h
include/xen/xenbus.h
net/iucv/iucv.c
sound/ac97/bus.c
sound/core/seq_device.c
sound/hda/hda_bus_type.c