linux-rt-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: John Mathew <john.mathew@unikie.com>
To: linux-rt-users@vger.kernel.org
Cc: bigeasy@linutronix.de, lukas.bulwahn@gmail.com,
	John Mathew <john.mathew@unikie.com>
Subject: [PATCH] crypto: only wait for completion once
Date: Tue, 31 Dec 2019 12:00:51 +0200	[thread overview]
Message-ID: <20191231100051.658-1-john.mathew@unikie.com> (raw)
In-Reply-To: <20191218165334.k4suur4gzlu62ibs@linutronix.de>

Proposed fix for the swake_up_all_locked warnings issue discussed in
Link: https://lore.kernel.org/linux-rt-users/20191218165334.k4suur4gzlu62ibs@linutronix.de/T/#t
Currently multiple wait for completions are scheduled for the same algo.
Only one completes and the rest are returned with ENOENT. This patch
checks for the name of the algorithm going to be waited up on, and if
the algorithm is already being waited for completion return EAGAIN ,
without accumulating completions and returning ENOENT.

Signed-off-by: John Mathew <john.mathew@unikie.com>
---
 crypto/api.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/crypto/api.c b/crypto/api.c
index d8ba54142620..1c6004e7ab6c 100644
--- a/crypto/api.c
+++ b/crypto/api.c
@@ -234,8 +234,12 @@ static struct crypto_alg *crypto_larval_lookup(const char *name, u32 type,
 		alg = crypto_alg_lookup(name, type, mask);
 	}
 
-	if (!IS_ERR_OR_NULL(alg) && crypto_is_larval(alg))
-		alg = crypto_larval_wait(alg);
+	if (!IS_ERR_OR_NULL(alg) && crypto_is_larval(alg))	{
+		if (!strcmp(alg->cra_name, name))
+			alg = ERR_PTR(-EAGAIN);
+		else
+			alg = crypto_larval_wait(alg);
+	}
 	else if (!alg)
 		alg = crypto_larval_add(name, type, mask);
 
-- 
2.17.1


  reply	other threads:[~2019-12-31 10:01 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-11  7:17 complete_all() with x waiters in swake_up_all_locked John Mathew
2019-12-12 17:12 ` Sebastian Andrzej Siewior
2019-12-13  9:08   ` John Mathew
2019-12-18 16:53     ` Sebastian Andrzej Siewior
2019-12-31 10:00       ` John Mathew [this message]
2020-01-14 12:47         ` [PATCH] crypto: only wait for completion once Sebastian Andrzej Siewior
2020-02-11 11:48           ` John Mathew
2020-02-11 12:04             ` Sebastian Andrzej Siewior
2020-02-11 15:52               ` John Mathew
2020-02-11 15:59                 ` Sebastian Andrzej Siewior
2020-02-12 12:55                   ` John Mathew
2020-02-12 17:02                     ` Sebastian Andrzej Siewior
2020-02-13  6:58                       ` John Mathew
2020-02-13  8:31                         ` Sebastian Andrzej Siewior
2020-02-18  7:18                           ` [PATCH] swait: Increase number of waiters for warning John Mathew
2020-03-20 16:54                             ` [PATCH RT] swait: Remove the warning with more than two waiters Sebastian Andrzej Siewior

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=20191231100051.658-1-john.mathew@unikie.com \
    --to=john.mathew@unikie.com \
    --cc=bigeasy@linutronix.de \
    --cc=linux-rt-users@vger.kernel.org \
    --cc=lukas.bulwahn@gmail.com \
    /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;
as well as URLs for NNTP newsgroup(s).