Skip to content

Commit c045e09

Browse files
committed
Merge: pcrypto/tegra: pull in fixes for Tegra Security Engine Driver
MR: https://gitlab.com/redhat/centos-stream/src/kernel/centos-stream-9/-/merge_requests/6860 JIRA: https://issues.redhat.com/browse/RHEL-83268 This patchset contains a number of important fixes to make NVidia Tegra Security Engine working properly. Signed-off-by: Marcin Juszkiewicz <mjuszkiewicz@redhat.com> Approved-by: Vladis Dronov <vdronov@redhat.com> Approved-by: Herbert Xu <zxu@redhat.com> Approved-by: CKI KWF Bot <cki-ci-bot+kwf-gitlab-com@redhat.com> Merged-by: Jan Stancek <jstancek@redhat.com>
2 parents dffc135 + 0ee18f7 commit c045e09

File tree

7 files changed

+524
-302
lines changed

7 files changed

+524
-302
lines changed

crypto/crypto_engine.c

Lines changed: 2 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,6 @@ static void crypto_finalize_request(struct crypto_engine *engine,
4141
struct crypto_async_request *req, int err)
4242
{
4343
unsigned long flags;
44-
bool finalize_req = false;
45-
int ret;
46-
struct crypto_engine_ctx *enginectx;
4744

4845
/*
4946
* If hardware cannot enqueue more requests
@@ -53,21 +50,11 @@ static void crypto_finalize_request(struct crypto_engine *engine,
5350
if (!engine->retry_support) {
5451
spin_lock_irqsave(&engine->queue_lock, flags);
5552
if (engine->cur_req == req) {
56-
finalize_req = true;
5753
engine->cur_req = NULL;
5854
}
5955
spin_unlock_irqrestore(&engine->queue_lock, flags);
6056
}
6157

62-
if (finalize_req || engine->retry_support) {
63-
enginectx = crypto_tfm_ctx(req->tfm);
64-
if (enginectx->op.prepare_request &&
65-
enginectx->op.unprepare_request) {
66-
ret = enginectx->op.unprepare_request(engine, req);
67-
if (ret)
68-
dev_err(engine->dev, "failed to unprepare request\n");
69-
}
70-
}
7158
req->complete(req, err);
7259

7360
kthread_queue_work(engine->kworker, &engine->pump_requests);
@@ -160,7 +147,7 @@ static void crypto_pump_requests(struct crypto_engine *engine,
160147
ret = engine->prepare_crypt_hardware(engine);
161148
if (ret) {
162149
dev_err(engine->dev, "failed to prepare crypt hardware\n");
163-
goto req_err_2;
150+
goto req_err_1;
164151
}
165152
}
166153

@@ -170,16 +157,7 @@ static void crypto_pump_requests(struct crypto_engine *engine,
170157
op = &alg->op;
171158
} else {
172159
enginectx = crypto_tfm_ctx(async_req->tfm);
173-
op = &enginectx->op;
174-
175-
if (op->prepare_request) {
176-
ret = op->prepare_request(engine, async_req);
177-
if (ret) {
178-
dev_err(engine->dev, "failed to prepare request: %d\n",
179-
ret);
180-
goto req_err_2;
181-
}
182-
}
160+
183161
if (!op->do_one_request) {
184162
dev_err(engine->dev, "failed to do request\n");
185163
ret = -EINVAL;
@@ -203,18 +181,6 @@ static void crypto_pump_requests(struct crypto_engine *engine,
203181
ret);
204182
goto req_err_1;
205183
}
206-
/*
207-
* If retry mechanism is supported,
208-
* unprepare current request and
209-
* enqueue it back into crypto-engine queue.
210-
*/
211-
if (enginectx->op.unprepare_request) {
212-
ret = enginectx->op.unprepare_request(engine,
213-
async_req);
214-
if (ret)
215-
dev_err(engine->dev,
216-
"failed to unprepare request\n");
217-
}
218184
spin_lock_irqsave(&engine->queue_lock, flags);
219185
/*
220186
* If hardware was unable to execute request, enqueue it
@@ -230,13 +196,6 @@ static void crypto_pump_requests(struct crypto_engine *engine,
230196
goto retry;
231197

232198
req_err_1:
233-
if (enginectx->op.unprepare_request) {
234-
ret = enginectx->op.unprepare_request(engine, async_req);
235-
if (ret)
236-
dev_err(engine->dev, "failed to unprepare request\n");
237-
}
238-
239-
req_err_2:
240199
async_req->complete(async_req, ret);
241200

242201
retry:

0 commit comments

Comments
 (0)