From nobody Mon Apr 13 21:40:12 2026 Received: from mail-pg1-f169.google.com (mail-pg1-f169.google.com [209.85.215.169]) (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 AB7893A453A for ; Wed, 4 Mar 2026 14:14:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772633687; cv=none; b=PitF7/V4t1kCMHFh3L9sRpbmyOBPsQ8NcYSActZQOn0tkCcvn2trHwRMZji7D89Rfs6t9D1Oixhv7W+GivnAtVZMsj7FVbmJyDKzZKES9Hv+BvqADzpKZtMrJv+sSufP9FaC190uCs2RYGsMuJZiVKnIxn5Q9mYQNms+8hg30fI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772633687; c=relaxed/simple; bh=Y3ZEpfGtBo5wEfRJBpy2tfrMQpFq9i6vp/FNkZcZBpI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=BuQvgFH0qlqRqT1SqxInJGmjBBmcLS7aNErPmexhOdzneREetcBlYTuqZzK7V5aKtDUArArcD1x7y68oYWylph5s0xNWzf57pwTrVyVLzyOUW3lYRHYsZG5saHMKJJ/EeO4ni1LYmDOgcpmXm6uUUkVtbenj3CgUTT0H9Qf7t2Q= 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=QFGvmb1Y; arc=none smtp.client-ip=209.85.215.169 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="QFGvmb1Y" Received: by mail-pg1-f169.google.com with SMTP id 41be03b00d2f7-c6e72d7a4d7so3970109a12.0 for ; Wed, 04 Mar 2026 06:14:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772633686; x=1773238486; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=U55+Fp08poiTG4IfoFQdxSWkxQAw3Oak5NMij+UTg0o=; b=QFGvmb1YuRzceqhHXT2tgqogW7n+K0B5+uI5VyTnLkdFetvecXZbHcabUmUv/uvgsE jX4bjY9vuYPRY/EFXkf6hxtt7jjgjsPizDxCKu8QfZKcvZkWo9TtOLDxhMJRQdYvFTsX 3ts4XFodDux4SOi4jCTwLb3kAiVjCrHQ29/mKEDdrM/KtEcjZbBOhkbosEWVQQpCHc4d RaxTxxp7ABGQ8HkBmzCXw0FzagVlRpWcF+bYr/4VkFXjnD8nHtwon++WxOyvoEWAb3fT Nsw12rtDlY9COPXmjbyzsOxelKJqdqmaKqeqk6d6ss9cr9g+kTC+j0tcViILKNocsus1 1Y+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772633686; x=1773238486; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=U55+Fp08poiTG4IfoFQdxSWkxQAw3Oak5NMij+UTg0o=; b=I4SKTKvX0MTPr5f9G9f2qy+EYorU5jAWQD4ZzUOkfwMiHrhyn4npzYNE0GyoYhCYCM 1J1TgnB7AjvwsjXo6v8wCSpLiP+KOq2fxLUuutEo886dmIRCa0IPGEEWIszwkS86t+J4 15psu+qp6GqMCm1eLnw1VLWTWWWxr6J43G8NucU+Esb/6LwAU0cBJSdReMTDStr5+ge5 YkQpqqJ3Mx0kQvKuUVvhXtxImy9rxx907a403JL1ubs1hVAqURZMqgExd33y7FfgBo/T cA4i9X9sdGcVctT1URDY+HSkxj+I/QFGphbVKHZPMmeqT/8KyYvwUtrCI2tGOP+ZRNIz BA+g== X-Forwarded-Encrypted: i=1; AJvYcCX0GKxI9WSvnph94rfcm6B+JNRz6oVIdLjy/OrV/eY5mmH3qIx/cV8nrMfJ6mTbPOS88yvuMzWNY0QwaBY=@vger.kernel.org X-Gm-Message-State: AOJu0YxoRIiUlf0N40mKiqfwhBtRqN8uozUkW/QohfRoK4Q483PkUdvA woBLOxogMxBjS5F4Pru//ZDsnq11Jzm8D+hOmIlsxEFi2kuFY/vEcd2d X-Gm-Gg: ATEYQzycDapWUgLbdk326VApMRRWFzPAT4tIf8ZCnFP5PYU5c3L44zXATcPuNBbxeK2 Bpenel63OaqLo9copvmGEtnsOb6AmF2E5QNHP1ET2mElRyzczP2riuQDzZ4j8SfdN8Ggb71LNk2 Fibw5MhvvZfS5JNVpwqts92MC98KEM9tmU6nobYOw6nsEyWnhPgtu0JrV1RgiH4iEdtR6AnUMbE PiGoUKwvy2I00BNPhKssiONfG+SyHFclzQ0jvTluD+mX3N/+/jzMv0NTfDjiFxIbkv/IqiRo2dl DjyiDGlQ0cJolJ3vxtQDiiglnqNDXUswKBqE7ViACJVMkYqL77V/KwJNyfvEJROa30p/N3srziU zAS43KRmn467ZrGYfSI1iVVmbCwWXtUP34U/FOJIhpnI9mYHggL/P+nMMviqDybNTBLUX9pvjcG vqz/WDf1kEH+sYzYfVssDZrg1wy/MAjImMLuoJ X-Received: by 2002:a17:902:cecf:b0:2ae:5a76:e26c with SMTP id d9443c01a7336-2ae6ab67292mr20188245ad.55.1772633685961; Wed, 04 Mar 2026 06:14:45 -0800 (PST) Received: from junjungu-PC.localdomain ([2408:820c:9009:3f2:c48d:9c04:d04e:c13a]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ae45b5201fsm111498375ad.87.2026.03.04.06.14.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2026 06:14:45 -0800 (PST) From: Felix Gu Date: Wed, 04 Mar 2026 22:14:32 +0800 Subject: [PATCH] iio: proximity: rfd77402: Fix completion race condition in IRQ mode Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260304-77402-v1-1-47ad6eedd643@gmail.com> X-B4-Tracking: v=1; b=H4sIAEc+qGkC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE vPSU3UzU4B8JSMDIzMDYwMTXXNzEwMj3dRkE3PLlFTDJMs0MyWg2oKi1LTMCrA50bG1tQB7col NVwAAAA== X-Change-ID: 20260304-77402-ec479de1b9f6 To: Jonathan Cameron , David Lechner , =?utf-8?q?Nuno_S=C3=A1?= , Andy Shevchenko , Shrikant Raskar Cc: Jonathan Cameron , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Felix Gu X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1772633681; l=1745; i=ustc.gu@gmail.com; h=from:subject:message-id; bh=Y3ZEpfGtBo5wEfRJBpy2tfrMQpFq9i6vp/FNkZcZBpI=; b=Cw5mT3O/rAnh6PpT80UyGPggjhMR/GdwmzE0LnoPsMuZjtlUsqDggT1iBqKyKoR0mx1WYsLBF zKLrlJqTcSvCBf2ehvcYafJRhzTkAB6ZuEaJUtfB/It7N+3fkW2UroX X-Developer-Key: i=ustc.gu@gmail.com; a=ed25519; pk=fjUXwmjchVN7Ja6KGP55IXOzFeCl9edaHoQIEUA+/hw= In IRQ mode, the completion was being reinitialized after the measurement command had already been sent to the hardware. This created a race condition where the IRQ handler could call complete() before reinit_completion() was executed. Consequently, wait_for_completion_timeout() would fail to see the signal and wait until it timed out. Move reinit_completion() to occur before the measurement command is triggered to ensure the synchronization primitive is ready to capture the interrupt. Fixes: dc81be96a73a ("iio: proximity: rfd77402: Add interrupt handling supp= ort") Signed-off-by: Felix Gu Reviewed-by: Shrikant Raskar --- drivers/iio/proximity/rfd77402.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/iio/proximity/rfd77402.c b/drivers/iio/proximity/rfd77= 402.c index 6afdbfca3e5a..81b8daf17a54 100644 --- a/drivers/iio/proximity/rfd77402.c +++ b/drivers/iio/proximity/rfd77402.c @@ -173,10 +173,8 @@ static int rfd77402_wait_for_result(struct rfd77402_da= ta *data) struct i2c_client *client =3D data->client; int val, ret; =20 - if (data->irq_en) { - reinit_completion(&data->completion); + if (data->irq_en) return rfd77402_wait_for_irq(data); - } =20 /* * As per RFD77402 datasheet section '3.1.1 Single Measure', the @@ -204,6 +202,9 @@ static int rfd77402_measure(struct rfd77402_data *data) if (ret < 0) return ret; =20 + if (data->irq_en) + reinit_completion(&data->completion); + ret =3D i2c_smbus_write_byte_data(client, RFD77402_CMD_R, RFD77402_CMD_SINGLE | RFD77402_CMD_VALID); --- base-commit: c025f6cf4209e1542ec2afebe49f42bbaf1a5c7b change-id: 20260304-77402-ec479de1b9f6 Best regards, --=20 Felix Gu