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

Commit 4ec24065 authored by Rafael J. Wysocki's avatar Rafael J. Wysocki
Browse files

ACPI / dock: Simplify dock_init_hotplug() and dock_release_hotplug()



Make dock_init_hotplug() and dock_release_hotplug() slightly simpler
and move some checks in those functions to the code paths where they
are needed.

Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: default avatarYinghai Lu <yinghai@kernel.org>
parent 37f90877
Loading
Loading
Loading
Loading
+8 −16
Original line number Diff line number Diff line
@@ -130,19 +130,16 @@ static int dock_init_hotplug(struct dock_dependent_device *dd,
	int ret = 0;

	mutex_lock(&hotplug_lock);

	if (dd->hp_context) {
	if (WARN_ON(dd->hp_context)) {
		ret = -EEXIST;
	} else {
		dd->hp_refcount = 1;
		dd->hp_ops = ops;
		dd->hp_context = context;
		dd->hp_release = release;
	}

	if (!WARN_ON(ret) && init)
		if (init)
			init(context);

	}
	mutex_unlock(&hotplug_lock);
	return ret;
}
@@ -157,22 +154,17 @@ static int dock_init_hotplug(struct dock_dependent_device *dd,
 */
static void dock_release_hotplug(struct dock_dependent_device *dd)
{
	void (*release)(void *) = NULL;
	void *context = NULL;

	mutex_lock(&hotplug_lock);

	if (dd->hp_context && !--dd->hp_refcount) {
		void (*release)(void *) = dd->hp_release;
		void *context = dd->hp_context;

		dd->hp_ops = NULL;
		context = dd->hp_context;
		dd->hp_context = NULL;
		release = dd->hp_release;
		dd->hp_release = NULL;
	}

	if (release && context)
		if (release)
			release(context);

	}
	mutex_unlock(&hotplug_lock);
}