From: Mika Westerberg Date: Mon, 8 Sep 2025 10:31:29 +0000 (+0300) Subject: thunderbolt: Keep XDomain reference during the lifetime of a service X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=8b4060998637f06975fceee9b73845d8672d411e;p=thirdparty%2Fkernel%2Flinux.git thunderbolt: Keep XDomain reference during the lifetime of a service This is needed because we release the service ID in tb_service_release() and the ID array is owned by the parent XDomain. Signed-off-by: Mika Westerberg --- diff --git a/drivers/thunderbolt/xdomain.c b/drivers/thunderbolt/xdomain.c index a1887a15a2849..0e97d0ad7733d 100644 --- a/drivers/thunderbolt/xdomain.c +++ b/drivers/thunderbolt/xdomain.c @@ -1039,6 +1039,7 @@ static void tb_service_release(struct device *dev) ida_free(&xd->service_ids, svc->id); kfree(svc->key); kfree(svc); + tb_xdomain_put(xd); } const struct device_type tb_service_type = { @@ -1147,7 +1148,7 @@ static void enumerate_services(struct tb_xdomain *xd) svc->id = id; svc->dev.bus = &tb_bus_type; svc->dev.type = &tb_service_type; - svc->dev.parent = &xd->dev; + svc->dev.parent = get_device(&xd->dev); dev_set_name(&svc->dev, "%s.%d", dev_name(&xd->dev), svc->id); tb_service_debugfs_init(svc);