]> git.dujemihanovic.xyz Git - linux.git/commitdiff
hwmon: (occ) Lock mutex in shutdown to prevent race with occ_active
authorEddie James <eajames@linux.ibm.com>
Mon, 6 Jun 2022 18:54:55 +0000 (13:54 -0500)
committerGuenter Roeck <linux@roeck-us.net>
Tue, 7 Jun 2022 12:45:42 +0000 (05:45 -0700)
Unbinding the driver or removing the parent device at the same time
as using the OCC active sysfs file can cause the driver to unregister
the hwmon device twice. Prevent this by locking the occ mutex in the
shutdown function.

Signed-off-by: Eddie James <eajames@linux.ibm.com>
Link: https://lore.kernel.org/r/20220606185455.21126-1-eajames@linux.ibm.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/occ/common.c

index d78f4bebc7189b2200de3dc2128d02514459f8a1..ea070b91e5b981badd923e235fa7b096354f0c21 100644 (file)
@@ -1228,10 +1228,15 @@ EXPORT_SYMBOL_GPL(occ_setup);
 
 void occ_shutdown(struct occ *occ)
 {
+       mutex_lock(&occ->lock);
+
        occ_shutdown_sysfs(occ);
 
        if (occ->hwmon)
                hwmon_device_unregister(occ->hwmon);
+       occ->hwmon = NULL;
+
+       mutex_unlock(&occ->lock);
 }
 EXPORT_SYMBOL_GPL(occ_shutdown);