From nobody Mon Sep 28 10:43:33 2026 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) (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 B29771A23A6 for ; Sun, 23 Aug 2026 04:23:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787458996; cv=none; b=Qk07p98HXXsEsTdVQhrLE5iQdUzLHCG9kmQyD6vle06bLBC0JvAYVQTl9hSWiR95x1v0TPkDc/5RW3R6rS4RxxgBfJb/bMWotl3npVxpnyQGqrLD50ZSdJ04KvA8U+cjFxYGQnXIXOewg6Zkkd5W1+bQZpOn93vyz8HQqXVxorQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787458996; c=relaxed/simple; bh=3jbqfX+LJOE4LgDFWxvC9cPEHh0UYZ2oUg18IBwNNko=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=et+rJFDKxEg9jOunNjt+9KYsxyIJ+/CrieK4AQLaxYqYbNisNnysMiwgQN6XGE2Naf+WxkrIUIKoZnferP5VoKuwzD+IyocJkUmFs1NvcPeCK16zingFytcHarymS22ag26Ts8WYjc0EiNUEH++JZC/JUIpqVhV+HjuuQpLc0fc= 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=maJ/bE2A; arc=none smtp.client-ip=209.85.208.51 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="maJ/bE2A" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-698ae09e356so3406158a12.2 for ; Sat, 22 Aug 2026 21:23:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787458993; x=1788063793; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=BIJS2CcWR3cjJ9nUGAUVjeQNXVtGXGh52wi5uvAZF88=; b=maJ/bE2Au0BjwS7xBlnhsoj+hAupgqO3Rno6nBuVLrvZhIoEsZ55cRY0EHaqKN+HsM I/V2IAc5kW6dHnU9ZNOyxvpsM8hIpammI+oBOHYk6IaUQpsQemHvduTGhrYm3WpBGCmH 2H5Qf+sDMiDBtUHFT6hP8JqWd93253JR16Zn5KnXvmkiNXm428CeRgVbZ5Zw+WYrgLHx GvpyTr+50cf66IoWh9+mbeM01bTcX+B9a2MKA4c3ZXyTuz5LSXT2kvlfv0jFeLbGQk/r Aq9igsfqnNsq3mVdodTgRoY6nfV3D8ZBxv968V0vgtRezrQAXy2xdQsCViscsK/BgH1d Iv4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787458993; x=1788063793; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=BIJS2CcWR3cjJ9nUGAUVjeQNXVtGXGh52wi5uvAZF88=; b=mfRlSQ64Vyyos1ZVKxX0JBbtUIqKzJhXODvwCoRuK2lkx1AOIMEQtMPA02NxJg+1n+ jHGiTNDmFl0BvIwHLYavl2nwv6ijIBHVTMi0PzwFw5GLE6hFytFjaNef+f/UQl/msqEd WGLUVn/5UKg9c0c5RGPkf2ecWIC0ocMoOXnOiUG/aJPSVLl4uIg1Pgm0nk4rrNb75PCc JGbvZ6Sfu3/VuaBK+k6KGrPp05jltL0agEDYDzRgNxiuTeQMtBdnm4UFDqbl7DifYqek jDsMQfjPERnlgajjmjzM7tC82CLgrWiFTIvCxxbTe4YqoIJtSeyt5YQllWETPhqmTQgB 7hBA== X-Forwarded-Encrypted: i=1; AHgh+RrKJWb+4lK+pd/uMeQRDfno2vFHctUZprR7cyVVdbzQ7JX0zb21yq3TZsNQoFK3ayNrSnwuDGlWdbmVMKI=@vger.kernel.org X-Gm-Message-State: AFuF++m7FUDMmhlv6KHM51ytT1WpB110eFJhaVFkIHewbcFLJTekIOuD 2ZZIHKnVsL75YVuouisH9rneKbf5Zk9gacd1DwmkadxGTU7QmG1d2cw8 X-Gm-Gg: AR+sD109flpj/B5G0ovPV18yMO9JleVu6cgsxbKITV77Lv+05+yHPBkexJmHDKdIiLk kfpf0kDwbOtiEKzQag/+3ce3anwU/qyXvSMOhIr6LqxOy3dQVxJHMp0vnGvzwGysgBSUGCXbNCl 8D6aWh9Vq53iQIsJC0DXfy9mF/gGP7vmqghPqg6FLHyIcZwq4W02YGAi4Z99yEYYlP8K7rQ0lVA YhHL/4gwzAkrYAl22GMynK/eVHkPY90d5hNEquVpTWsUg5l0sPkjX7C1IxLc4SIt3GXNrAwiazY huaHQacV0rd6vdgMOmDc+7aukoUM+mI8I11LcSvYFGKtIrKDpvZrIkKX8x4ODlEarnFCEm8BMUo P0TxRzf3yC64ySWFpEC5MT/PWJfzXpuLzC7qO/pH7FGEOeOO13Yl2Zbp90WD2xOttQp1Nx1aJ8U bKBxhVIBJ0iEVQF6yFp6ziRKayPUmFS5/TNAAcdZ33lhnGeB+pl58oFp9h9QhjZ+r7uOzCz913v lI= X-Received: by 2002:a05:6402:5d2:b0:69a:b38d:403c with SMTP id 4fb4d7f45d1cf-6a42f18f10amr20464229a12.7.1787458992804; Sat, 22 Aug 2026 21:23:12 -0700 (PDT) Received: from localhost.localdomain ([196.235.129.19]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a59e1d7399sm1615626a12.26.2026.08.22.21.23.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 22 Aug 2026 21:23:11 -0700 (PDT) From: Salah Triki To: Joshua Crofts , Puranjay Mohan , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko Cc: linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Salah Triki Subject: [PATCH v2] iio: temperature: tmp117: fix calibbias cache update on I2C write failure Date: Sun, 23 Aug 2026 05:23:00 +0100 Message-ID: <20260823042300.24308-1-salah.triki@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The calibbias cache (data->calibbias) was updated before the I2C write to TMP117_REG_TEMP_OFFSET was known to succeed. If the write failed, the function correctly returned an error, but the driver's internal cache had already been updated to the new value. This causes the cache and the actual hardware register to go out of sync: a subsequent write of the same value would be silently skipped by the early "if (off =3D=3D data->calibbias) return 0;" check, since the cache matches even though the register was never successfully updated. Update data->calibbias only after confirming the I2C write succeeded, so the cache always reflects the actual state of the device. Found by code inspection. Fixes: df041e737a38 ("iio: temperature: add driver support for ti tmp117") Signed-off-by: Salah Triki --- Changes since v2: - Fixed formatting around ret assignment and check (Joshua Crofts). - Mentioned in commit description that the issue was found by code inspecti= on (David Lechner). drivers/iio/temperature/tmp117.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/iio/temperature/tmp117.c b/drivers/iio/temperature/tmp= 117.c index 6bc18616ad15..a07028d560ba 100644 --- a/drivers/iio/temperature/tmp117.c +++ b/drivers/iio/temperature/tmp117.c @@ -95,15 +95,20 @@ static int tmp117_write_raw(struct iio_dev *indio_dev, = struct iio_chan_spec { struct tmp117_data *data =3D iio_priv(indio_dev); s16 off; + int ret; =20 switch (mask) { case IIO_CHAN_INFO_CALIBBIAS: off =3D clamp_t(int, val, S16_MIN, S16_MAX); if (off =3D=3D data->calibbias) return 0; + + ret =3D i2c_smbus_write_word_swapped(data->client, TMP117_REG_TEMP_OFFSE= T, off); + if (ret) + return ret; + data->calibbias =3D off; - return i2c_smbus_write_word_swapped(data->client, - TMP117_REG_TEMP_OFFSET, off); + return 0; =20 default: return -EINVAL; --=20 2.43.0