From: Lothar Rubusch <l.rubusch@gmail.com>
To: thorsten.blum@linux.dev, herbert@gondor.apana.org.au,
davem@davemloft.net, nicolas.ferre@microchip.com,
alexandre.belloni@bootlin.com, claudiu.beznea@tuxon.dev
Cc: linux-crypto@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, l.rubusch@gmail.com
Subject: [PATCH 09/12] crypto: atmel-ecc - simplify remove path and relax busy handling
Date: Sun, 17 May 2026 18:06:36 +0000 [thread overview]
Message-ID: <20260517180639.9657-11-l.rubusch@gmail.com> (raw)
In-Reply-To: <20260517180639.9657-1-l.rubusch@gmail.com>
Simplify atmel_ecc_remove() by removing early exit logic and
centralizing client retrieval and validation.
Previously the driver returned early when active transform users
were detected, which could leave partially initialized state
without proper cleanup.
Replace this with a warning when active transforms are present,
but continue with full teardown of crypto registration and
device cleanup.
This ensures consistent removal behaviour even when the device
is still in use.
Signed-off-by: Lothar Rubusch <l.rubusch@gmail.com>
---
drivers/crypto/atmel-ecc.c | 19 ++++++-------------
1 file changed, 6 insertions(+), 13 deletions(-)
diff --git a/drivers/crypto/atmel-ecc.c b/drivers/crypto/atmel-ecc.c
index dcfc09d24497..ce7a2e750ba8 100644
--- a/drivers/crypto/atmel-ecc.c
+++ b/drivers/crypto/atmel-ecc.c
@@ -346,21 +346,14 @@ static int atmel_ecc_probe(struct i2c_client *client)
static void atmel_ecc_remove(struct i2c_client *client)
{
- struct atmel_i2c_client_priv *i2c_priv = i2c_get_clientdata(client);
+ struct atmel_i2c_client_priv *i2c_priv;
- /* Return EBUSY if i2c client already allocated. */
- if (atomic_read(&i2c_priv->tfm_count)) {
- /*
- * After we return here, the memory backing the device is freed.
- * That happens no matter what the return value of this function
- * is because in the Linux device model there is no error
- * handling for unbinding a driver.
- * If there is still some action pending, it probably involves
- * accessing the freed memory.
- */
- dev_emerg(&client->dev, "Device is busy, expect memory corruption.\n");
+ i2c_priv = i2c_get_clientdata(client);
+ if (WARN_ON(!i2c_priv))
return;
- }
+
+ if (atomic_read(&i2c_priv->tfm_count))
+ dev_warn(&client->dev, "Device is busy, remove it anyhow\n");
crypto_unregister_kpp(&atmel_ecdh_nist_p256);
--
2.53.0
next prev parent reply other threads:[~2026-05-17 18:07 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-17 18:06 [PATCH 00/12] crypto: atmel - introduce shared i2c core client management and capability-based selection framework Lothar Rubusch
2026-05-17 18:06 ` [PATCH] crypto: atmel - add capability-based I2C client selection Lothar Rubusch
2026-05-17 18:06 ` [PATCH 01/12] crypto: atmel-ecc - rename driver_data before moving it into atmel-i2c Lothar Rubusch
2026-05-17 18:06 ` [PATCH 02/12] crypto: atmel - rename atmel_ecc_driver_data to atmel_i2c_client_mgmt Lothar Rubusch
2026-05-17 18:06 ` [PATCH 03/12] crypto: atmel - move i2c client management instance into core driver Lothar Rubusch
2026-05-17 18:06 ` [PATCH 04/12] crypto: atmel-ecc - simplify probe error handling Lothar Rubusch
2026-05-17 18:06 ` [PATCH 05/12] crypto: atmel - factor out i2c client unregistration helper Lothar Rubusch
2026-05-17 18:06 ` [PATCH 06/12] crypto: atmel-sha204a - add i2c hw client list and improve probe error handling Lothar Rubusch
2026-05-17 18:06 ` [PATCH 07/12] crypto: atmel-sha204a - switch to module_i2c_driver Lothar Rubusch
2026-05-17 18:06 ` [PATCH 08/12] crypto: atmel-ecc " Lothar Rubusch
2026-05-17 18:06 ` Lothar Rubusch [this message]
2026-05-17 18:06 ` [PATCH 10/12] crypto: atmel-sha204a - guard remove path against missing client data Lothar Rubusch
2026-05-17 18:06 ` [PATCH 11/12] crypto: atmel - move i2c client selection to core driver Lothar Rubusch
2026-05-17 18:06 ` [PATCH 12/12] crypto: atmel - add capability-based I2C client selection Lothar Rubusch
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260517180639.9657-11-l.rubusch@gmail.com \
--to=l.rubusch@gmail.com \
--cc=alexandre.belloni@bootlin.com \
--cc=claudiu.beznea@tuxon.dev \
--cc=davem@davemloft.net \
--cc=herbert@gondor.apana.org.au \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nicolas.ferre@microchip.com \
--cc=thorsten.blum@linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox