From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dy1-f179.google.com (mail-dy1-f179.google.com [74.125.82.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D156B39A80E for ; Thu, 16 Apr 2026 09:18:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.179 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776331106; cv=none; b=fVlxjK5BwAKhGdYou0O82X1VDHg0dnpsufBvy6pMvE8+0YPcZ8MQ5SqPdar9unzbifIpgXkDzPpfp38aFMU3pKD/FT6v58md8kmsogQXD1gnNzFBW06GeGdTPKPXA5wLF9zbBD6iQMIvoQJivlpIIzsktzm+4u3F2coNajbgRqs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776331106; c=relaxed/simple; bh=ukXYTowOQ2GLPlr9/ML47Z6elr7y/440J2GW7fP6Dmw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=L9L8DpXybemhhvtcyUUi7Bb12C/Yfr3/Kz5yfmAdkfg45YVOII7YZLyEDRUoriqGYqprebcENYHDX2LpZeGfU2XGme7kKPQndFg/bbbd8IDkpLcNQ/4x/AQ4EIVaADcxK1GJNGWNQ2tYAMKaaOhB22+QHyTTgYi2vDNCVrX6Qo0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Q8Eg6j4s; arc=none smtp.client-ip=74.125.82.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Q8Eg6j4s" Received: by mail-dy1-f179.google.com with SMTP id 5a478bee46e88-2bdcf5970cdso336683eec.0 for ; Thu, 16 Apr 2026 02:18:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776331103; x=1776935903; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7DRdRPBWMP2dSl6d5xHeVzh9tJ6WT/9pi24TeffCvJM=; b=Q8Eg6j4saj4qMbL7RPcYNzDU3Fhy5xuPfJBOLZr1iREKMgMloB82b1cDljCIX+8F5f M5xcDIoe8UZnk9zA1aafCqp1E/9CC2sTxMuhVMCxXNt6TdyEmk1RbdODHbGHN8SIxnRD ofSWfwC2banEz00FO9GrLS5msazz3N+h8kRB9AjDgDKXXgtG4M3lVrSXzXd85LpukU6h cbct7RQiwuF2CNX7A+p94EZyQNZKl/SoDYu2cHAleZnn+4MI+MEnId2XbpTlClQdedAO 9jB1KmYRvvw7wnJ+YlmJJLG9fdKoNLOeVfOQe7ibRKvpUtndXZLYxseBQ/AInWAx/kT/ Gd+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776331103; x=1776935903; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=7DRdRPBWMP2dSl6d5xHeVzh9tJ6WT/9pi24TeffCvJM=; b=GGeqDX7H2oYaeTFxxQYIPdzzh1A1KQ4526fVBi+5MW5e02qJ7S16zrYPsdSJJp/7TW psAJMi8gGrDMsgmCMfmaxYWNkhD+VUQrQSJgum6Er21G6tX7GoHTDmMndCpdvwuAxVBQ 14UqBbBg9d5MN50iyJgqOfVPG+mCosfuM+6o5mRgWMxHIRCLxNx8A++NxRA/4ikSrEQA Ne24RtJ731cNfefublcjAubt6aYz8B4EguWejJFhkUYb1SqS9akS37CmDDqI0BeJPh76 F12kb/4HXlkuCf1O9cD5drONJjxEPmXyyLJvSxPBF1kte5Va+cb0NBKDHw2o9tEKqext xoEQ== X-Forwarded-Encrypted: i=1; AFNElJ9yxZS2r6IXrNPwdF5Z9gs3bEpCuNJtilFbfQ6yxEWJFdq9JG+YlQEWgIJgaMnCye0F1t2X2Mf8pMxlEBU=@vger.kernel.org X-Gm-Message-State: AOJu0YzGnX2D/PRi1eEg8zMx6e+E1WppDcu1CMWvzm7UQlK9NSxZlBv9 8HbAYCbo7qVnagYhUaO+PIya1BukwY4HUHkHoHjrB0qdtmLLgV3Y8I81 X-Gm-Gg: AeBDievXkno+Nx4eyzgcaDyc21oGPhLANTJZgJwpEsEO4v/bn2PlGnpuHQK9IKEKJIt mGPZ69itK9aJsxyui5QRCS+EnRWDkJyPwihqLbcAp3sTHu5emApPbWkecn3C4MSWRfBiWRG1A1s Ox6wf5QPsCF5umhD7EPLergkSR9oSjDX5m+zlhFFpI54foxM4tsBb3uNRbTT6vW0Fb/J30lLbcY uQKrLa6ZW/TmgqMt1WtBwjxwiS5P5C/VmgqhI8DSM6cJXhD0Nd1pkeF98/jXo49OURtOnotn97B 3YGBoAq2U3+neGW+r7ubLDPf5Sz7npMTFshWE2CYMBqXWe1mWoq0W+ZaOzLIJJA37/Qq2BwQ5gU LKvI28o3A7LuvTmIj7VE3O51qSzJlLW1ObAhXb5585H57715eFl+rMuBbCvLoK1Bwy2IdsMSZp2 lNV+B72AL+OG4XaZw00nmTnNxb755gvuQgT7Y4BbYnYVlEOuCnbijflVx2LuoGqz4nqSRNE3Awi Jn9uvzjN0V0oluhCG1veHsGPp+3E5FjOiRybNtT912MOaWncCFIjGOZy8J+3oZVF7U3/aIW7tw1 EY8/yomeKLNY6r5y1xL9qbpzPMKI84t26A== X-Received: by 2002:a05:693c:2b10:b0:2d8:4dee:6ad0 with SMTP id 5a478bee46e88-2df7f467535mr1167366eec.16.1776331102863; Thu, 16 Apr 2026 02:18:22 -0700 (PDT) Received: from 2045L.localdomain (49.sub-75-226-46.myvzw.com. [75.226.46.49]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2de8eb8482asm6591216eec.15.2026.04.16.02.18.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Apr 2026 02:18:22 -0700 (PDT) From: Gui-Dong Han To: Guenter Roeck Cc: linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org, baijiaju1990@gmail.com, Gui-Dong Han Subject: [PATCH 3/3] hwmon: (adm1031) Serialize update rate changes Date: Thu, 16 Apr 2026 17:17:54 +0800 Message-ID: <20260416091754.310-3-hanguidong02@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260416091754.310-1-hanguidong02@gmail.com> References: <20260416091754.310-1-hanguidong02@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit update_interval_store() updates the hardware rate bits in ADM1031_REG_FAN_FILTER and then updates data->update_interval. Those steps are currently split across unlocked and locked sections. This also leaves the register read-modify-write sequence unprotected. Hold data->update_lock across the whole sequence so that the register update and the cached software state remain synchronized. Fixes: 87c33daadbfe ("hwmon: (adm1031) Allow setting update rate") Signed-off-by: Gui-Dong Han --- drivers/hwmon/adm1031.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/hwmon/adm1031.c b/drivers/hwmon/adm1031.c index 887fba9ea149..a46db83471f2 100644 --- a/drivers/hwmon/adm1031.c +++ b/drivers/hwmon/adm1031.c @@ -897,13 +897,14 @@ static ssize_t update_interval_store(struct device *dev, } /* if not found, we point to the last entry (lowest update interval) */ + mutex_lock(&data->update_lock); + /* set the new update rate while preserving other settings */ reg = adm1031_read_value(client, ADM1031_REG_FAN_FILTER); reg &= ~ADM1031_UPDATE_RATE_MASK; reg |= i << ADM1031_UPDATE_RATE_SHIFT; adm1031_write_value(client, ADM1031_REG_FAN_FILTER, reg); - mutex_lock(&data->update_lock); data->update_interval = update_intervals[i]; mutex_unlock(&data->update_lock); -- 2.43.0