Commit e0c40529 authored by Hans de Goede's avatar Hans de Goede
Browse files

platform/x86/amd/pmf: Ensure mutexes are initialized before use



As soon as the first handler or sysfs file is registered
the mutex may get used.

Move the initialization to before any handler registration /
sysfs file creation.

Likewise move the destruction of the mutex to after all
the de-initialization is done.

Fixes: da5ce22d ("platform/x86/amd/pmf: Add support for PMF core layer")
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20230130132554.696025-1-hdegoede@redhat.com
parent f21bf622
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -385,6 +385,9 @@ static int amd_pmf_probe(struct platform_device *pdev)
	if (!dev->regbase)
		return -ENOMEM;

	mutex_init(&dev->lock);
	mutex_init(&dev->update_mutex);

	apmf_acpi_init(dev);
	platform_set_drvdata(pdev, dev);
	amd_pmf_init_features(dev);
@@ -394,8 +397,6 @@ static int amd_pmf_probe(struct platform_device *pdev)
	dev->pwr_src_notifier.notifier_call = amd_pmf_pwr_src_notify_call;
	power_supply_reg_notifier(&dev->pwr_src_notifier);

	mutex_init(&dev->lock);
	mutex_init(&dev->update_mutex);
	dev_info(dev->dev, "registered PMF device successfully\n");

	return 0;
@@ -406,11 +407,11 @@ static int amd_pmf_remove(struct platform_device *pdev)
	struct amd_pmf_dev *dev = platform_get_drvdata(pdev);

	power_supply_unreg_notifier(&dev->pwr_src_notifier);
	mutex_destroy(&dev->lock);
	mutex_destroy(&dev->update_mutex);
	amd_pmf_deinit_features(dev);
	apmf_acpi_deinit(dev);
	amd_pmf_dbgfs_unregister(dev);
	mutex_destroy(&dev->lock);
	mutex_destroy(&dev->update_mutex);
	kfree(dev->buf);
	return 0;
}