Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 24988d3a authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman
Browse files

greybus: hd: fix host-device-removal race



Make sure to tear down the svc and flush any on-going hotplug processing
before removing the remaining interfaces.

This fixes crashes due to host-device removal racing with svc
hotplug/unplug processing (e.g. at "UniPro restart").

Testing Done:
Verified that this fixes crashes reproducible on SDB when unloading the
host-device driver module while generating hotplug/unplug events.

Signed-off-by: default avatarJohan Hovold <johan@hovoldconsulting.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent 3b710ec0
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -135,9 +135,12 @@ EXPORT_SYMBOL_GPL(gb_hd_add);

void gb_hd_del(struct gb_host_device *hd)
{
	gb_interfaces_remove(hd);

	/*
	 * Tear down the svc and flush any on-going hotplug processing before
	 * removing the remaining interfaces.
	 */
	gb_svc_del(hd->svc);
	gb_interfaces_remove(hd);

	device_del(&hd->dev);
}