[PATCH] drm/i915/dsi: fix i2c adapter reference leak in i2c_adapter_lookup()
From: Ma Ke
Date: Sun Jun 14 2026 - 10:24:16 EST
i2c_adapter_lookup() acquires a reference on the i2c adapter through
i2c_acpi_find_adapter_by_handle() but not releases it. Each
invocation of this ACPI resource callback leaks one device reference,
potentially leading to resource exhaustion over repeated driver
load/unload cycles.
Calling path: i2c_acpi_find_adapter_by_handle() -> bus_find_device()
-> get_device.
Found by code review.
Signed-off-by: Ma Ke <make_ruc2021@xxxxxxx>
Cc: stable@xxxxxxxxxxxxxxx
Fixes: 8cbf89db2941 ("drm/i915/dsi: Parse the I2C element from the VBT MIPI sequence block (v3)")
---
drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
index fe12041e913c..2097c5d17cb7 100644
--- a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
+++ b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
@@ -460,8 +460,10 @@ static int i2c_adapter_lookup(struct acpi_resource *ares, void *data)
return 1;
adapter = i2c_acpi_find_adapter_by_handle(adapter_handle);
- if (adapter)
+ if (adapter) {
intel_dsi->i2c_bus_num = adapter->nr;
+ put_device(&adapter->dev);
+ }
return 1;
}
--
2.43.0