From: Eddie James Date: Mon, 6 Jun 2022 18:54:55 +0000 (-0500) Subject: hwmon: (occ) Lock mutex in shutdown to prevent race with occ_active X-Git-Tag: v5.19-rc3~22^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ac6888ac5a11c0a47d1f1da4b7809c0c595fdc5d;p=thirdparty%2Fkernel%2Flinux.git hwmon: (occ) Lock mutex in shutdown to prevent race with occ_active 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 Link: https://lore.kernel.org/r/20220606185455.21126-1-eajames@linux.ibm.com Signed-off-by: Guenter Roeck --- diff --git a/drivers/hwmon/occ/common.c b/drivers/hwmon/occ/common.c index d78f4bebc7189..ea070b91e5b98 100644 --- a/drivers/hwmon/occ/common.c +++ b/drivers/hwmon/occ/common.c @@ -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);