Hans de Goede 041142d7d2 ACPI: platform-profile: Fix possible deadlock in platform_profile_remove()
After a rmmod thinkpad_acpi, lockdep pointed out this possible deadlock:

Our _show and _store sysfs attr functions get called with the kn->active
lock held for the sysfs attr and then take the profile_lock.
sysfs_remove_group() also takes the kn->active lock for the sysfs attr,
so if we call it with the profile_lock held, then we get an ABBA deadlock.

platform_profile_remove() must only be called by drivers which have
first *successfully* called platform_profile_register(). Anything else
is a driver bug. So the check for cur_profile being set before calling
sysfs_remove_group() is not necessary and it can be dropped.

It is safe to call sysfs_remove_group() without holding the profile_lock
since the attr-group group cannot be re-added until after we clear
cur_profile.

Change platform_profile_remove() to only hold the profile_lock while
clearing the cur_profile, fixing the deadlock.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2021-01-27 18:48:12 +01:00
..
2020-11-23 12:50:17 +01:00
2020-11-10 18:52:51 +01:00
2020-10-14 11:42:04 -07:00
2019-06-23 09:23:33 +02:00
2020-10-15 10:46:16 -07:00
2020-11-09 19:08:06 +01:00
2020-12-22 17:59:11 +01:00
2020-10-27 19:30:27 +01:00
2020-11-09 19:08:06 +01:00
2020-11-09 19:25:20 +01:00
2019-11-13 11:12:08 +01:00
2020-11-09 19:08:06 +01:00
2020-12-09 19:10:20 +01:00
2020-12-15 16:39:06 -08:00
2020-11-09 19:08:06 +01:00
2020-11-09 19:08:06 +01:00
2020-07-09 14:09:28 +02:00
2020-10-22 18:58:26 +02:00
2020-11-09 19:08:06 +01:00