From patchwork Tue Mar 4 09:25:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Herbert Xu X-Patchwork-Id: 14000241 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4F65AC021B8 for ; Tue, 4 Mar 2025 09:25:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D3FB56B0088; Tue, 4 Mar 2025 04:25:10 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id CFA726B008C; Tue, 4 Mar 2025 04:25:10 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BDC806B008A; Tue, 4 Mar 2025 04:25:10 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id A16BE6B0082 for ; Tue, 4 Mar 2025 04:25:10 -0500 (EST) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 47AEE819F2 for ; Tue, 4 Mar 2025 09:25:10 +0000 (UTC) X-FDA: 83183334780.08.DE0B31B Received: from abb.hmeau.com (abb.hmeau.com [144.6.53.87]) by imf03.hostedemail.com (Postfix) with ESMTP id 21FFB2000E for ; Tue, 4 Mar 2025 09:25:07 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=hmeau.com header.s=formenos header.b="euheJy/j"; spf=pass (imf03.hostedemail.com: domain of herbert@gondor.apana.org.au designates 144.6.53.87 as permitted sender) smtp.mailfrom=herbert@gondor.apana.org.au; dmarc=pass (policy=quarantine) header.from=apana.org.au ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1741080308; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references:dkim-signature; bh=OoqpE0SkD7kTh5lf/A0RjqC+kdgsA27dsiXVeZ3yVdI=; b=OV00SLI9BKZT9ufXLi1W01A+GwSUZlMHmZECQitceNd8+RUOuf7Kn/naNdX0Q/ChzhT3Iu xEcudR3n2ruABXCdtVnpPwBYqF5RYPCHKh3v3nzMUG+78CXom/Cfb5yZNOmpsoDSu6SuD8 2rNbAKZ0Jf8Zofpbfzi9lsWnTZinBqI= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=hmeau.com header.s=formenos header.b="euheJy/j"; spf=pass (imf03.hostedemail.com: domain of herbert@gondor.apana.org.au designates 144.6.53.87 as permitted sender) smtp.mailfrom=herbert@gondor.apana.org.au; dmarc=pass (policy=quarantine) header.from=apana.org.au ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1741080308; a=rsa-sha256; cv=none; b=SVuarsvdiV/kctNV30876DBuNU6PFRJqlCHVS4RSAh5aypoNPIM2vJiRcBheEyC6dmyJgF D0KKnv7xR1hgayfAZ5ZPI3x/l3rRuyHnioYL4QJDUNYkfdL6D+3m7DNE9K8BA16qIhC21e vaHSLbpGdSyLCQTViOubuecAGGF59Y8= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=hmeau.com; s=formenos; h=Cc:To:Subject:From:References:In-Reply-To:Message-Id:Date: Sender:Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=OoqpE0SkD7kTh5lf/A0RjqC+kdgsA27dsiXVeZ3yVdI=; b=euheJy/jNLG9lofIrRVrWR2dfD MOmfVs0l+IXKFAp7m7G+qgpNhKp49YC2RAIkulAVSS2wgfBHQzuAQD4MLOlRjgmj080gKt00YtOd0 5NkzK5yO4v+w3EdvZkhtF4Owl2+NuRnt0zg3ykmBy8URLAQRLDA+Pz66oQEJfRcp4i3X+kGF8cfzB 2yKhs5Sd79/uC801DZNJrwZJUDpAvXUfll0j31S7Qpt7+1aDXlmPT4USsit3+QnsuTuHYIScCUguK fFntRiIey0qjd5PAyvyB4iQuSzFBD/c7NqBuhVNK7hIqWWdAXwbIlVvPkrDqU8p71Tz8gpDBJBzQb EZ/YPNmA==; Received: from loth.rohan.me.apana.org.au ([192.168.167.2]) by formenos.hmeau.com with smtp (Exim 4.96 #2 (Debian)) id 1tpOWN-003a2K-2e; Tue, 04 Mar 2025 17:25:04 +0800 Received: by loth.rohan.me.apana.org.au (sSMTP sendmail emulation); Tue, 04 Mar 2025 17:25:03 +0800 Date: Tue, 04 Mar 2025 17:25:03 +0800 Message-Id: <3c3c20451382a4e17f2179d436f5841fa1cc3a28.1741080140.git.herbert@gondor.apana.org.au> In-Reply-To: References: From: Herbert Xu Subject: [v2 PATCH 1/7] crypto: api - Add cra_type->destroy hook To: Linux Crypto Mailing List Cc: linux-mm@kvack.org, Yosry Ahmed , Kanchana P Sridhar X-Rspam-User: X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 21FFB2000E X-Stat-Signature: 3fjfmgthne9prhmnux8ggyb3xpjq63z3 X-HE-Tag: 1741080307-237421 X-HE-Meta: U2FsdGVkX1+dyWOwwl/GRMe+zlNWeCnM9uwfM9ArWt79qLfD7RXY1AhnXw+hLcKm7xs4l4mIrt+76+PhtCiOwWW1fwoYceDK8zqk1XpW31aLxfK9X0GqCrGX6ZGcMa5ZHj9ypwE5QJmVi7YbBZnIV2ZbqxKiOSWVEqHQ3glNi5wTOE8VOI91nJdEKoBZIxth2335AvRYL+hSpLfyAmq1+b3wUTSdBymCkxD58ksAUVUS6Ose/QXaiZ17pnYmmEG/mn/sj/LwmZOw1g1eeWOTdKcgEsuvctCwbFQlbDRmj+KGfgBYqv4dhavUxm1ahQG67Kv6zuKIY6eykOmaEywEGFD0LdH+lJCkKn2hV1qvrDD2xNhKd/AIUAjgpo+XFBRHAEYJXsU4IyWddxcVQBQ88r+JoG1Bl7b9UrXBsQK04qGZYeqCEQXlrFv9wU8SR8/iOJ44OJtEUhERKtC86j9wBosJ7yNccRTnDkdM7kA5TFM5SDp/CqoBz8MJKva5eIDoBLvQS25zAGzXpBZJFRtZd9Z2DPf3d3/GG+KDlMaSIpeCzRNqSGEEDEhtrlaPqHDZbQboSZcVNBS/eWs1vl1iCEkTtCquLjOHTJwE4beoCHcXttJakZHc07whWCHHv9YTOa0wMQ5n4eUmcLekPp8JXTVsNmaLyJ2ZG6LAp1zeDnx/6ht6AdnjUTlrQDXtE3uAm/rCzU6mYdkvrXJLe2c5QDM3IYir72tSwW1UQw+5ujkwZDcWr0jjkLFMTgHQ/ts85yvqBriPcAKWyxJZVd6KDcUvfZvFp7OKxn465S8AYoanBiEjcQLvHk9CxrXOhZGIlO7TWNvgArBulsNnM8C/f30Rc6Ms/aWwLqJP359x8oafFZ0yTlqBUETfWDD/cZB0zXzbYZdtXeBhYWcTUG6yQi4gjybLB0+JHNTD28Q8+FDhEa384WcnEHtibGfIWCUeNSCzEpTcZUo8uV9aNuL EsAoUh7L hIRMz058H1EjvrY9g0B2QIowktMIQsDLHhmYbNECM7NGvNTGkpjss+VsFfKn2lPetlPXHeExOn1Y4KBGUpoeLkLBEHL+4L+6KjtRYU7seHtBPfg8RqJ8ehR+w6bpzRA3pNq8CbyeqduR2Qn5AGqta8bgqNK8/UzFrpjLNMWOgJh+OWjGRbQt/1YApud+SevOUYbRcJjxJa6wOy4/vP+LtzrPeRPW/qEU+dbS7EMDKNVSmp9XQ28/O3GaFsJKPRbDthuaNZS3gCs/W3yU= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Add a cra_type->destroy hook so that resources can be freed after the last user of a registered algorithm is gone. Signed-off-by: Herbert Xu --- crypto/algapi.c | 9 +++++++++ crypto/internal.h | 6 ++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/crypto/algapi.c b/crypto/algapi.c index e7a9a2ada2cf..8f72dd15cf9c 100644 --- a/crypto/algapi.c +++ b/crypto/algapi.c @@ -89,6 +89,15 @@ static void crypto_destroy_instance(struct crypto_alg *alg) schedule_work(&inst->free_work); } +void crypto_destroy_alg(struct crypto_alg *alg) +{ + if (alg->cra_type && alg->cra_type->destroy) + alg->cra_type->destroy(alg); + + if (alg->cra_destroy) + alg->cra_destroy(alg); +} + /* * This function adds a spawn to the list secondary_spawns which * will be used at the end of crypto_remove_spawns to unregister diff --git a/crypto/internal.h b/crypto/internal.h index 08d43b40e7db..11567ea24fc3 100644 --- a/crypto/internal.h +++ b/crypto/internal.h @@ -40,6 +40,7 @@ struct crypto_type { void (*show)(struct seq_file *m, struct crypto_alg *alg); int (*report)(struct sk_buff *skb, struct crypto_alg *alg); void (*free)(struct crypto_instance *inst); + void (*destroy)(struct crypto_alg *alg); unsigned int type; unsigned int maskclear; @@ -127,6 +128,7 @@ void *crypto_create_tfm_node(struct crypto_alg *alg, const struct crypto_type *frontend, int node); void *crypto_clone_tfm(const struct crypto_type *frontend, struct crypto_tfm *otfm); +void crypto_destroy_alg(struct crypto_alg *alg); static inline void *crypto_create_tfm(struct crypto_alg *alg, const struct crypto_type *frontend) @@ -163,8 +165,8 @@ static inline struct crypto_alg *crypto_alg_get(struct crypto_alg *alg) static inline void crypto_alg_put(struct crypto_alg *alg) { - if (refcount_dec_and_test(&alg->cra_refcnt) && alg->cra_destroy) - alg->cra_destroy(alg); + if (refcount_dec_and_test(&alg->cra_refcnt)) + crypto_destroy_alg(alg); } static inline int crypto_tmpl_get(struct crypto_template *tmpl)