From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (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 E1E5B3B5DE9 for ; Sun, 16 Aug 2026 23:42:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786923766; cv=none; b=GjQ/cjrP7XC7V4VanLsnwhuw8dIum2Yd8fl060xMNKYeabTRAQf4ItkXem5TPHXYJV8hYJ7d8EdQKOZzGkJlBwsvTluHMGpQsbvWL5opqt8YznJowXp6BgXyA9e9hHrX12RKqurbNzgbrEmoZ429AJkp611M2rm/n775G3sFZfM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786923766; c=relaxed/simple; bh=VrOjBtDyZdaPKMTzH33OYXvmL8G+wknlOLtphJjQl1c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=F4OS45zbJq37/wwXrqRFdDY0dJWbFjN6Hy+plW+8c5rFLx//6Q3iBsCUDIJAPi6dx6+a0pr6fgVCnn7vDpHbL768WJjgrR955UeeLZDz9IfaNGm6Vj9C2+xsvRLfMieS2YsJBqG2njnArloQ4GxJVJg3cVGV5699M4jj5iQUi48= 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=JtMmysjv; arc=none smtp.client-ip=209.85.128.52 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="JtMmysjv" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-4998e0916faso11552655e9.2 for ; Sun, 16 Aug 2026 16:42:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786923763; x=1787528563; 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:content-type; bh=G8Fz286ccYp2u449U94NCIPiv/rPOIyX29xqISQ0+fg=; b=JtMmysjvUjYxClZ2FBrTP3CTcp/Pjy76tr0imHX0XRpBqXQZFaFEnenhpPZIj77Agv WQZ3QfTlRLsmIG1IU+KdZrXSDkOi7kgHDMIAIAp0TxYRos8I1LDDiP8/gGw61OyyQxgU J1kOobyWSorhYmY30F1pmQiB/uJibhgRTEB6BSCYeiuC1Af5qBbw+PEpdNVFnq6sGp0i JiWSL40TvBKFlxLaMpPzAdVHxn0iOPSxVs7k8rTP0UrDXJUsz7jS7fy+8+Zvd6OEcQWU e9xfVLEAMNGASctbKXXNJNYmZVB1RliUzKhPwmbDJwyVrzrqJa5hlM9vvAlQX7oNjL/M fv+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786923763; x=1787528563; 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:content-type; bh=G8Fz286ccYp2u449U94NCIPiv/rPOIyX29xqISQ0+fg=; b=I78pvbUHXTj9EeOyF7l4KQ30PymkUpdxOJ6qlsr4jPD7GwWVSu5sM/MDM1/x44Ewi5 J8j6vIqVqgbPq9ajIufCMjd728qbIYEiLufWhuOAv/go8NFJ5DomGGz29WDVP3wkBEFs jTEcC8BSvIIUusX0l73mLh+TRbj634hIfx5EE7SC52fXsvwS2t4hXA7bERiNwmkmf68s d8QUe++aE72g49516YUlxKnswLprXC6s0xU8WYM5xivLWemDMmo9ERMnb2/wNXyZjNho Vt9VPyHSFmNS9uw78n1TuQQUqs5sLyzOr5FK+gXa33iVQeZIKgWRCv99tfJjJnGBl5IP JJbg== X-Forwarded-Encrypted: i=1; AHgh+RrWmdz2bymc58V68jJ6lOxXBnJvNNi3wFXu76cHAYGgfX4yJmXpGW/GkZbpGiswPn5DKfgokUI2f9l9oX0=@vger.kernel.org X-Gm-Message-State: AOJu0Yx22zTN6/r8ZVWuDzsRRYi1vBWgr5mUHQ+dIVZJfJj6DEBD59v0 nFyQfaZT9G8noVPET2bD5VWRlpR9pOo+9SVBZWzIoj40efg6oeKwJvXD X-Gm-Gg: AR+sD13pdFTRuGsA2TzpZaDkXWijFJE2FcKOLHXU1F9AZ1bS08K+ngkQeL92TZmv9eB qOtyM9UPcZNpyYeh6eCArfI01tdaevbb2DOBPeLlA3SxOij7FExt3f8MNfNg6SV1ao4NRmDPbjC U6wo2pdIt7KVu6rGCH1uTDPQVyQroXBGJPNb7KGm1V2u/zfsHd3mSh2f5s++ph2ffxYuLPntWL3 Zo+aBk1EfLLHeQZ1n/kUMX4pxxHZK9Lywx15TyUROOlKgRIuNZtVaJBlOfrvvGX7JT3Jua0508j FBInNyfmlKaQP2z4tRfnm85vgdsHgva9PEv6hAGGkaJ080o2C8zerk4NG0AgtbT6+meFFCRS3Wt E3sjeY89ADAIrcow/8jyaVvqxCKvMEcwNMfULkAxBuMhYON0+az9vMvidNahisJvArN5/2pWcVa CsdFULGSIDSQnoQEbg8dWawSyd15z3k76whIRDZOnUJywf4RizuvQj7pk7b6wmaaV5WBSNYchBe N1aNXNFQiDpVrpuQ4Ij0zufxUv22IRlzf8= X-Received: by 2002:a05:600c:3485:b0:499:726a:a017 with SMTP id 5b1f17b1804b1-49987938e19mr343714265e9.1.1786923762984; Sun, 16 Aug 2026 16:42:42 -0700 (PDT) Received: from MacBookPro ([2001:8a0:6c97:6700:ac71:8b16:e755:35c9]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499960ff072sm112915555e9.3.2026.08.16.16.42.40 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 16 Aug 2026 16:42:41 -0700 (PDT) From: Gabriel Rondon To: Jonathan Cameron Cc: Andy Shevchenko , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Stepan Ionichev , Maxwell Doose , Yash Suthar , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH v4 2/3] iio: accel: bmc150: take the lock before checking ev_enable_state Date: Mon, 17 Aug 2026 00:42:30 +0100 Message-ID: <20260816234231.14168-3-grondon@gmail.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260816234231.14168-1-grondon@gmail.com> References: <20260816234231.14168-1-grondon@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 bmc150_accel_write_event_config() compared the requested state against data->ev_enable_state before acquiring data->mutex. Two threads racing to enable and disable the same event can both pass the check and then both call bmc150_accel_set_interrupt(), which tracks enables with an atomic users count. The inc/dec can become unbalanced, leaving the interrupt enabled or disabled against the callers' intent. Move the check inside the locked region so the test of ev_enable_state and its update are atomic with respect to the interrupt accounting. Fixes: 14ee64f438b8 ("iio: bmc150: exit early if event / trigger state is not changed") Cc: stable@vger.kernel.org Signed-off-by: Gabriel Rondon --- drivers/iio/accel/bmc150-accel-core.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/iio/accel/bmc150-accel-core.c b/drivers/iio/accel/bmc150-accel-core.c index d067da9b5ce4..bcbb9f0c830a 100644 --- a/drivers/iio/accel/bmc150-accel-core.c +++ b/drivers/iio/accel/bmc150-accel-core.c @@ -805,11 +805,13 @@ static int bmc150_accel_write_event_config(struct iio_dev *indio_dev, struct bmc150_accel_data *data = iio_priv(indio_dev); int ret; - if (state == data->ev_enable_state) - return 0; - mutex_lock(&data->mutex); + if (state == data->ev_enable_state) { + mutex_unlock(&data->mutex); + return 0; + } + ret = bmc150_accel_set_interrupt(data, BMC150_ACCEL_INT_ANY_MOTION, state); if (ret < 0) { -- 2.50.1 (Apple Git-155)