linux/drivers
Adrian Hunter ff23a7fae9 i3c: master: Prevent reuse of dynamic address on device add failure
[ Upstream commit b3ba8383da ]

i3c_master_add_i3c_dev_locked() is called after a device has already
been assigned a dynamic address.  If the function fails, the address
remains marked as free and may be reallocated to another device,
leading to address conflicts on the bus.

Ensure the address is not marked as free on failure, by updating the
address slot state to prevent the address from being re-used.

Emit an error message to inform of the failure.

Opportunistically remove the !master check because it is impossible.

Note, directly resetting the device's dynamic address is no longer
an option, since Direct RSTDAA was deprecated from I3C starting from
version 1.1 and v1.1 (or later) target devices are meant to NACK it.

Fixes: 3a379bbcea ("i3c: Add core I3C infrastructure")
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Reviewed-by: Frank Li <Frank.Li@nxp.com>
Link: https://patch.msgid.link/20260612080107.11606-4-adrian.hunter@intel.com
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2026-07-24 15:51:39 +02:00
..
accessibility speakup: Fix sizeof() vs ARRAY_SIZE() bug 2024-06-16 13:39:11 +02:00
acpi ACPI: IPMI: Fix message kref handling on dead device 2026-07-24 15:51:33 +02:00
amba amba: tegra-ahb: Fix device leak on SMMU enable 2026-01-19 13:09:54 +01:00
android binder: fix UAF in binder_free_transaction() 2026-07-24 15:51:19 +02:00
ata ata: ahci: force 32-bit DMA for JMicron JMB582/JMB585 2026-06-01 17:35:01 +02:00
atm atm: fore200e: fix use-after-free in tasklets during device removal 2026-03-04 07:20:36 -05:00
auxdisplay auxdisplay: arm-charlcd: fix release_mem_region() size 2026-03-04 07:19:20 -05:00
base firmware_loader: Fix recursive lock in device_cache_fw_images() 2026-07-24 15:51:33 +02:00
bcma Driver core update for 5.15-rc1 2021-09-01 08:44:42 -07:00
block use less confusing names for iov_iter direction initializers 2026-06-19 13:33:46 +02:00
bluetooth Bluetooth: btusb: fix wakeup source leak on probe failure 2026-07-24 15:51:19 +02:00
bus bus: sunxi-rsb: Always check register address validity 2026-07-24 15:51:30 +02:00
cdrom cdrom, scsi: sr: propagate read-only status to block layer via set_disk_ro() 2026-06-01 17:35:41 +02:00
char char: tlclk: fix use-after-free in tlclk_cleanup() 2026-07-24 15:51:37 +02:00
clk clk: qcom: a53: Corrected frequency multiplier for 1152MHz 2026-07-24 15:51:37 +02:00
clocksource clocksource/drivers/timer-integrator-ap: Add missing Kconfig dependency on OF 2026-03-04 07:20:00 -05:00
comedi comedi: comedi_test: Fix limiting of convert_arg in waveform_ai_cmdtest() 2026-06-19 13:33:29 +02:00
connector net/connector: Add const qualifier to cb_id 2020-12-16 11:06:49 -08:00
counter counter: interrupt-cnt: Drop IRQF_NO_THREAD flag 2026-01-19 13:10:18 +01:00
cpufreq cpufreq: conservative: Simplify frequency limit handling 2026-07-24 15:51:30 +02:00
cpuidle cpuidle: powerpc: avoid double clear when breaking snooze 2026-06-01 17:35:22 +02:00
crypto crypto: cavium/cpt - fix DMA cleanup using wrong loop index 2026-07-24 15:51:35 +02:00
cxl cxl/mem: Fix shutdown order 2023-11-20 11:08:27 +01:00
dax dax/kmem: account for partial discontiguous resource upon removal 2026-07-24 15:51:31 +02:00
dca dca: Use PTR_ERR_OR_ZERO() to simplify code 2020-05-15 16:25:20 +02:00
devfreq PM / devfreq: governor: Replace sscanf() with kstrtoul() in set_freq_store() 2025-08-28 16:24:17 +02:00
dio drivers: dio: fix possible memory leak in dio_init() 2022-12-31 13:14:27 +01:00
dma dmaengine: Fix possible use after free 2026-07-24 15:51:37 +02:00
dma-buf udmabuf: fix DMA direction mismatch in release_udmabuf() 2026-07-24 15:51:25 +02:00
edac EDAC/{skx_common,skx}: Fix UBSAN shift-out-of-bounds in skx_get_dimm_info 2026-07-24 15:51:31 +02:00
eisa EISA: use DEVICE_ATTR_RO() helper macro 2021-06-04 15:28:34 +02:00
extcon extcon: ptn5150: handle pending IRQ events during system resume 2026-06-01 17:35:22 +02:00
firewire firewire: nosy: Fix dma_free_coherent() size 2026-01-19 13:09:57 +01:00
firmware firmware: arm_scmi: Fix OOB in scmi_power_name_get() 2026-07-24 15:51:29 +02:00
fpga fpga: region: fix use-after-free in child_regions_with_firmware() 2026-07-04 13:39:40 +02:00
fsi use less confusing names for iov_iter direction initializers 2026-06-19 13:33:46 +02:00
gnss treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
gpio gpio: eic-sprd: use raw_spinlock_t in the irq startup path 2026-07-24 15:51:21 +02:00
gpu drm/amd/display: Add missing kdoc for ALLM parameters 2026-07-24 15:51:37 +02:00
greybus greybus: Fix use-after-free bug in gb_interface_release due to race condition. 2024-07-05 09:14:23 +02:00
hid HID: logitech-hidpp: remove excess kernel-doc member in hidpp_scroll_counter 2026-07-24 15:51:37 +02:00
hsi HSI: ssi_protocol: Fix use after free vulnerability in ssi_protocol Driver Due to Race Condition 2025-05-02 07:44:06 +02:00
hv Drivers: hv: vmbus: Improve the logic of reserving fb_mmio on Gen2 VMs 2026-07-04 13:39:40 +02:00
hwmon hwmon: (pmbus/adm1266) reject short block-read responses in the GPIO accessors 2026-06-01 17:35:49 +02:00
hwspinlock hwspinlock: qcom: avoid uninitialized struct members 2026-07-24 15:51:34 +02:00
hwtracing coresight: etm4x: Correct TRCVMIDCCTLR1 save and restore 2026-07-24 15:51:37 +02:00
i2c i2c: stm32f7: truncate clock period instead of rounding it 2026-07-24 15:51:25 +02:00
i3c i3c: master: Prevent reuse of dynamic address on device add failure 2026-07-24 15:51:39 +02:00
idle intel_idle: Allow loading ACPI tables for any family 2025-08-28 16:24:16 +02:00
iio iio: accel: mma8452: handle I2C read error(s) in mma8452_read() 2026-07-24 15:51:37 +02:00
infiniband RDMA/mlx5: Fix undefined shift of user RQ WQE size 2026-07-24 15:51:34 +02:00
input Input: maplecontrol - set driver data before registering input device 2026-07-24 15:51:26 +02:00
interconnect interconnect: qcom: sc7280: Add missing num_links to xm_pcie3_1 node 2025-08-28 16:24:03 +02:00
iommu iommu/amd: Fix a stale comment about which legacy mode is user visible 2026-07-24 15:51:28 +02:00
ipack ipack: ipoctal: fix module reference leak 2021-09-27 17:38:49 +02:00
irqchip irqchip/imgpdc: Fix resource leak, add missing chained handler cleanup on remove 2026-07-04 13:39:40 +02:00
isdn use less confusing names for iov_iter direction initializers 2026-06-19 13:33:46 +02:00
leds leds: lgm-sso: Remove duplicate assignments for priv->mmap 2026-06-01 17:35:35 +02:00
macintosh macintosh/mac_hid: fix race condition in mac_hid_toggle_emumouse 2026-01-19 13:09:28 +01:00
mailbox mailbox: mailbox-test: make data_ready a per-instance variable 2026-06-01 17:35:41 +02:00
mcb mcb: fix a double free bug in chameleon_parse_gdd() 2025-05-02 07:44:31 +02:00
md md/raid10: reset read_slot when reusing r10bio for discard 2026-07-24 15:51:31 +02:00
media media: qcom: venus: relax encoder frame/blur step size on v6 2026-07-24 15:51:31 +02:00
memory memory: tegra30-emc: Fix dll_change check 2026-06-01 17:35:33 +02:00
memstick memstick: Add timeout to prevent indefinite waiting 2025-12-07 06:09:16 +09:00
message scsi: fusion: Remove unused variable 'rc' 2024-12-14 19:51:02 +01:00
mfd mfd: cros_ec: Delay dev_set_drvdata() until probe success 2026-07-24 15:51:21 +02:00
misc misc: fastrpc: Fix NULL pointer dereference in rpmsg callback 2026-07-04 13:39:40 +02:00
mmc mmc: sdhci-of-dwcmshc: Disable clock before DLL configuration 2026-06-19 13:33:42 +02:00
most most: usb: fix double free on late probe failure 2025-12-07 06:09:35 +09:00
mtd mtd: spi-nor: Drop duplicate Kconfig dependency 2026-07-24 15:51:30 +02:00
mux mux: gpio: Simplify code by using dev_err_probe() 2021-04-02 16:28:53 +02:00
net net: mana: guard TX wq object destroy with INVALID_MANA_HANDLE check 2026-07-24 15:51:35 +02:00
nfc nfc: nxp-nci: i2c: use rising-edge IRQ on ACPI systems 2026-06-19 13:33:22 +02:00
ntb NTB: epf: Fix request_irq() unwind in ntb_epf_init_isr() 2026-07-24 15:51:25 +02:00
nubus nubus: Partially revert proc_create_single_data() conversion 2023-07-05 18:25:05 +01:00
nvdimm nvdimm/bus: Fix potential use after free in asynchronous initialization 2026-04-18 10:33:17 +02:00
nvme nvme-multipath: fix flex array size in struct nvme_ns_head 2026-07-24 15:51:30 +02:00
nvmem nvmem: core: improve range check for nvmem_cell_write() 2025-03-13 12:50:32 +01:00
of device property: Make modifications of fwnode "flags" thread safe 2026-06-01 17:35:13 +02:00
opp OPP: debugfs: Fix warning around icc_get_name() 2024-03-26 18:21:23 -04:00
parisc parisc: Fix IRQ leak in LASI driver 2026-06-01 17:35:21 +02:00
parport parport: Fix race between port and client registration 2026-06-19 13:33:26 +02:00
pci PCI: mediatek: Use actual physical address instead of virt_to_phys() 2026-07-24 15:51:38 +02:00
pcmcia PCMCIA: Fix garbled log messages for KERN_CONT 2026-06-01 17:35:37 +02:00
perf perf: arm_spe: Prevent overflow in PERF_IDX2OFF() 2025-10-19 16:21:29 +02:00
phy phy: phy-can-transceiver: Check driver match and driver data against NULL 2026-07-24 15:51:37 +02:00
pinctrl pinctrl: mediatek: mt8167: Fix Schmitt trigger register offset of pins 34-39 2026-07-24 15:51:33 +02:00
platform platform/x86: xo15-ebook: Fix wakeup source and GPE handling 2026-07-24 15:51:37 +02:00
pnp PNP: ACPI: fix fortify warning 2024-02-23 08:54:38 +01:00
power power: reset: linkstation-poweroff: fix use-after-free in the linkstation_poweroff_init() 2026-07-04 13:39:40 +02:00
powercap powercap: fix sscanf() error return value handling 2026-01-19 13:10:19 +01:00
pps pps: fix warning in pps_register_cdev when register device fail 2025-10-19 16:21:33 +02:00
ps3 powerpc/ps3: Warn on PS3 device errors 2021-06-10 21:44:58 +10:00
ptp ptp: Add PHC file mode checks. Allow RO adjtime() without FMODE_WRITE. 2026-02-06 16:41:51 +01:00
pwm pwm: imx27: Fix variable truncation in .apply() 2026-07-24 15:51:30 +02:00
rapidio rapidio/tsi721: prevent a bad dereference in tsi721_db_dpc() 2026-07-24 15:51:31 +02:00
ras RAS/CEC: Correct ce_add_elem()'s returned values 2021-04-07 11:52:26 +02:00
regulator regulator: core: fix locking in regulator_resolve_supply() error path 2026-07-04 13:39:37 +02:00
remoteproc remoteproc: mediatek: Unprepare SCP clock during system suspend 2026-04-18 10:33:11 +02:00
reset reset: brcmstb: Enable reset drivers for ARCH_BCM2835 2025-08-28 16:24:18 +02:00
rpmsg rpmsg: core: fix race in driver_override_show() and use core helper 2026-03-04 07:20:25 -05:00
rtc rtc: abx80x: Disable alarm feature if no interrupt attached 2026-06-01 17:35:40 +02:00
s390 Revert "s390/cio: Fix device lifecycle handling in css_alloc_subchannel()" 2026-06-01 17:35:46 +02:00
sbus module: remove never implemented MODULE_SUPPORTED_DEVICE 2021-03-17 13:16:18 -07:00
scsi scsi: pm8001: Fix error code in non_fatal_log_show() 2026-07-24 15:51:32 +02:00
sh sh: clk: Fix clk_enable() to return 0 on NULL clk 2025-01-09 13:28:34 +01:00
siox siox: fix possible memory leak in siox_device_add() 2022-11-26 09:24:36 +01:00
slimbus slimbus: qcom-ngd-ctrl: Register callbacks after creating the ngd 2026-07-24 15:51:16 +02:00
soc soc: qcom: aoss: compare against normalized cooling state 2026-06-01 17:35:34 +02:00
soundwire soundwire: stream: restore params when prepare ports fail 2025-08-28 16:24:10 +02:00
spi spi: xilinx: use FIFO occupancy register to determine buffer size 2026-07-24 15:51:35 +02:00
spmi spmi: hisi-spmi-controller: Do not override device identifier 2024-07-05 09:14:20 +02:00
ssb ssb: Fix division by zero issue in ssb_calc_clock_rate 2024-09-04 13:23:20 +02:00
staging staging: most: video: avoid double free on video register failure 2026-07-24 15:51:37 +02:00
target scsi: target: iscsi: Fix CRC overread and double-free in iscsit_handle_text_cmd() 2026-06-19 13:33:49 +02:00
tc The main MIPS changes for 5.6: 2020-01-31 11:28:31 -08:00
tee tee: optee: prevent use-after-free when the client exits before the supplicant 2026-06-19 13:33:32 +02:00
thermal thermal: hwmon: Fix critical temperature attribute removal 2026-07-24 15:51:29 +02:00
thunderbolt thunderbolt: property: Cap recursion depth in __tb_property_parse_dir() 2026-06-19 13:33:48 +02:00
tty serial: 8250_omap: clear rx_running on zero-length DMA completes 2026-07-24 15:51:27 +02:00
uio uio: uio_fsl_elbc_gpcm:: Add null pointer check to uio_fsl_elbc_gpcm_probe 2026-01-19 13:09:23 +01:00
usb usb: host: max3421: Reject hub port requests for non-existent ports 2026-07-24 15:51:37 +02:00
vdpa vduse: Requeue failed read to send_list head 2026-07-24 15:51:34 +02:00
vfio vfio/iommu_type1: replace kfree with kvfree 2026-07-04 13:39:37 +02:00
vhost vhost/vdpa: validate virtqueue index in mmap and fault paths 2026-07-24 15:51:34 +02:00
video fbdev: sm501fb: Fix buffer errors in OF binding code 2026-07-24 15:51:34 +02:00
virt minmax: add in_range() macro 2025-10-19 16:21:28 +02:00
virtio virtio-mmio: fix device release warning on module unload 2026-07-24 15:51:20 +02:00
visorbus visorbus: fix error return code in visorchipset_init() 2021-06-04 15:27:26 +02:00
vlynq bus: Make remove callback return void 2021-07-21 11:53:42 +02:00
vme vme: Fix error not catched in fake_init() 2022-12-31 13:14:30 +01:00
w1 w1: therm: Fix off-by-one buffer overflow in alarms_store 2026-02-06 16:42:02 +01:00
watchdog watchdog: unregister PM notifier on watchdog unregister 2026-07-24 15:51:33 +02:00
xen use less confusing names for iov_iter direction initializers 2026-06-19 13:33:46 +02:00
zorro zorro: Drop useless (and hardly used) .driver member in struct zorro_dev 2021-08-05 14:37:04 +02:00
Kconfig firmware: include drivers/firmware/Kconfig unconditionally 2021-10-07 16:51:26 +02:00
Makefile virtio: always enter drivers/virtio/ 2021-12-22 09:32:39 +01:00