]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
hwmon: (pmbus/core) Avoid race condition during probe
authorGuenter Roeck <linux@roeck-us.net>
Mon, 3 Aug 2026 18:40:50 +0000 (11:40 -0700)
committerGuenter Roeck <linux@roeck-us.net>
Mon, 3 Aug 2026 19:45:41 +0000 (12:45 -0700)
pmbus_write_smbalert_mask() is not guarded, which can cause race conditions
with concurrent sysfs attribute accesses.

Similar, PMBus accesses in pmbus_init_debugfs() are not guarded, also
resulting in potential race conditions.

Add guards to both functions to prevent the races.

Reported-by: Sashiko <sashiko-bot@kernel.org>
Fixes: 221819ca4c36e ("hwmon: (pmbus/core) Add interrupt support")
Fixes: 1e069dfd96dfe ("hwmon: (pmbus) Add debugfs for status registers")
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/pmbus/pmbus_core.c

index 5567d37f13fe26de6684909fc34b1888f47315c7..095e128709af44624552c843b28b068aae2650c4 100644 (file)
@@ -3427,6 +3427,8 @@ static int pmbus_write_smbalert_mask(struct i2c_client *client, u8 page, u8 reg,
 {
        int ret;
 
+       guard(pmbus_lock)(client);
+
        ret = _pmbus_write_word_data(client, page, PMBUS_SMBALERT_MASK, reg | (val << 8));
 
        /*
@@ -3662,6 +3664,8 @@ static void pmbus_init_debugfs(struct i2c_client *client,
        if (!entries)
                return;
 
+       guard(pmbus_lock)(client);
+
        /*
         * Add device-specific entries.
         * Please note that the PMBUS standard allows all registers to be