Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F153406684
D35383.id107601.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
16 KB
Referenced Files
None
Subscribers
None
D35383.id107601.diff
View Options
Index: sys/contrib/openzfs/module/os/freebsd/zfs/crypto_os.c
===================================================================
--- sys/contrib/openzfs/module/os/freebsd/zfs/crypto_os.c
+++ sys/contrib/openzfs/module/os/freebsd/zfs/crypto_os.c
@@ -169,6 +169,7 @@
{
int error;
+ error = 0;
crp->crp_opaque = session;
for (;;) {
#if __FreeBSD_version < 1400004
@@ -179,18 +180,16 @@
#endif
crp->crp_callback = async ? freebsd_zfs_crypt_done :
freebsd_zfs_crypt_done_sync;
- error = crypto_dispatch(crp);
- if (error == 0) {
- if (async) {
- mtx_lock(&session->fs_lock);
- while (session->fs_done == false) {
- msleep(crp, &session->fs_lock, 0,
- "zfs_crypto", 0);
- }
- mtx_unlock(&session->fs_lock);
+ crypto_dispatch(crp);
+ if (async) {
+ mtx_lock(&session->fs_lock);
+ while (session->fs_done == false) {
+ msleep(crp, &session->fs_lock, 0,
+ "zfs_crypto", 0);
}
- error = crp->crp_etype;
+ mtx_unlock(&session->fs_lock);
}
+ error = crp->crp_etype;
if (error == ENOMEM) {
pause("zcrnomem", 1);
Index: sys/dev/cxgbe/crypto/t4_crypto.c
===================================================================
--- sys/dev/cxgbe/crypto/t4_crypto.c
+++ sys/dev/cxgbe/crypto/t4_crypto.c
@@ -1775,7 +1775,6 @@
ccr_soft(struct ccr_session *s, struct cryptop *crp)
{
struct cryptop *new;
- int error;
new = crypto_clonereq(crp, s->sw_session, M_NOWAIT);
if (new == NULL) {
@@ -1792,11 +1791,7 @@
*/
new->crp_opaque = crp;
new->crp_callback = ccr_soft_done;
- error = crypto_dispatch_async(new, CRYPTO_ASYNC_ORDERED);
- if (error != 0) {
- crp->crp_etype = error;
- crypto_done(crp);
- }
+ crypto_dispatch_async(new, CRYPTO_ASYNC_ORDERED);
}
static void
Index: sys/geom/eli/g_eli.h
===================================================================
--- sys/geom/eli/g_eli.h
+++ sys/geom/eli/g_eli.h
@@ -698,7 +698,7 @@
void g_eli_read_done(struct bio *bp);
void g_eli_write_done(struct bio *bp);
-int g_eli_crypto_rerun(struct cryptop *crp);
+void g_eli_crypto_rerun(struct cryptop *crp);
bool g_eli_alloc_data(struct bio *bp, int sz);
void g_eli_free_data(struct bio *bp);
Index: sys/geom/eli/g_eli.c
===================================================================
--- sys/geom/eli/g_eli.c
+++ sys/geom/eli/g_eli.c
@@ -238,13 +238,12 @@
* accelerator or something like this.
* The function updates the SID and rerun the operation.
*/
-int
+void
g_eli_crypto_rerun(struct cryptop *crp)
{
struct g_eli_softc *sc;
struct g_eli_worker *wr;
struct bio *bp;
- int error;
bp = (struct bio *)crp->crp_opaque;
sc = bp->bio_to->geom->softc;
@@ -259,12 +258,7 @@
crp->crp_session);
wr->w_sid = crp->crp_session;
crp->crp_etype = 0;
- error = crypto_dispatch(crp);
- if (error == 0)
- return (0);
- G_ELI_DEBUG(1, "%s: crypto_dispatch() returned %d.", __func__, error);
- crp->crp_etype = error;
- return (error);
+ crypto_dispatch(crp);
}
static void
Index: sys/geom/eli/g_eli_crypto.c
===================================================================
--- sys/geom/eli/g_eli_crypto.c
+++ sys/geom/eli/g_eli_crypto.c
@@ -94,12 +94,10 @@
crp->crp_callback = g_eli_crypto_done;
crypto_use_buf(crp, data, datasize);
- error = crypto_dispatch(crp);
- if (error == 0) {
- while (crp->crp_opaque == NULL)
- tsleep(crp, PRIBIO, "geli", hz / 5);
- error = crp->crp_etype;
- }
+ crypto_dispatch(crp);
+ while (crp->crp_opaque == NULL)
+ tsleep(crp, PRIBIO, "geli", hz / 5);
+ error = crp->crp_etype;
crypto_freereq(crp);
crypto_freesession(sid);
Index: sys/geom/eli/g_eli_integrity.c
===================================================================
--- sys/geom/eli/g_eli_integrity.c
+++ sys/geom/eli/g_eli_integrity.c
@@ -132,8 +132,8 @@
struct bio *bp;
if (crp->crp_etype == EAGAIN) {
- if (g_eli_crypto_rerun(crp) == 0)
- return (0);
+ g_eli_crypto_rerun(crp);
+ return (0);
}
bp = (struct bio *)crp->crp_opaque;
bp->bio_inbed++;
@@ -296,8 +296,8 @@
u_int nsec;
if (crp->crp_etype == EAGAIN) {
- if (g_eli_crypto_rerun(crp) == 0)
- return (0);
+ g_eli_crypto_rerun(crp);
+ return (0);
}
bp = (struct bio *)crp->crp_opaque;
bp->bio_inbed++;
@@ -456,7 +456,6 @@
u_int i, lsec, nsec, data_secsize, decr_secsize, encr_secsize;
off_t dstoff;
u_char *p, *data, *authkey, *plaindata;
- int error __diagused;
bool batch;
G_ELI_LOGREQ(3, bp, "%s", __func__);
@@ -579,9 +578,7 @@
if (batch) {
TAILQ_INSERT_TAIL(&crpq, crp, crp_next);
} else {
- error = crypto_dispatch(crp);
- KASSERT(error == 0,
- ("crypto_dispatch() failed (error=%d)", error));
+ crypto_dispatch(crp);
}
}
Index: sys/geom/eli/g_eli_privacy.c
===================================================================
--- sys/geom/eli/g_eli_privacy.c
+++ sys/geom/eli/g_eli_privacy.c
@@ -93,8 +93,8 @@
struct bio *bp;
if (crp->crp_etype == EAGAIN) {
- if (g_eli_crypto_rerun(crp) == 0)
- return (0);
+ g_eli_crypto_rerun(crp);
+ return (0);
}
bp = (struct bio *)crp->crp_opaque;
bp->bio_inbed++;
@@ -146,8 +146,8 @@
struct bio *bp, *cbp;
if (crp->crp_etype == EAGAIN) {
- if (g_eli_crypto_rerun(crp) == 0)
- return (0);
+ g_eli_crypto_rerun(crp);
+ return (0);
}
bp = (struct bio *)crp->crp_opaque;
bp->bio_inbed++;
@@ -263,7 +263,7 @@
u_int i, nsec, secsize;
off_t dstoff;
u_char *data = NULL;
- int error __diagused, pages_offset;
+ int pages_offset;
bool batch;
G_ELI_LOGREQ(3, bp, "%s", __func__);
@@ -351,9 +351,7 @@
if (batch) {
TAILQ_INSERT_TAIL(&crpq, crp, crp_next);
} else {
- error = crypto_dispatch(crp);
- KASSERT(error == 0,
- ("crypto_dispatch() failed (error=%d)", error));
+ crypto_dispatch(crp);
}
}
Index: sys/kgssapi/krb5/kcrypto_aes.c
===================================================================
--- sys/kgssapi/krb5/kcrypto_aes.c
+++ sys/kgssapi/krb5/kcrypto_aes.c
@@ -119,18 +119,17 @@
static int
aes_crypto_cb(struct cryptop *crp)
{
- int error;
struct aes_state *as = (struct aes_state *) crp->crp_opaque;
if (CRYPTO_SESS_SYNC(crp->crp_session))
return (0);
- error = crp->crp_etype;
- if (error == EAGAIN)
- error = crypto_dispatch(crp);
+ if (crp->crp_etype == EAGAIN) {
+ crypto_dispatch(crp);
+ return (0);
+ }
mtx_lock(&as->as_lock);
- if (error || (crp->crp_flags & CRYPTO_F_DONE))
- wakeup(crp);
+ wakeup(crp);
mtx_unlock(&as->as_lock);
return (0);
@@ -142,7 +141,6 @@
{
struct aes_state *as = ks->ks_priv;
struct cryptop *crp;
- int error;
crp = crypto_getreq(as->as_session_aes, M_WAITOK);
@@ -162,13 +160,12 @@
crypto_use_buf(crp, buf, skip + len);
crp->crp_opaque = as;
crp->crp_callback = aes_crypto_cb;
-
- error = crypto_dispatch(crp);
+ crypto_dispatch(crp);
if (!CRYPTO_SESS_SYNC(as->as_session_aes)) {
mtx_lock(&as->as_lock);
- if (!error && !(crp->crp_flags & CRYPTO_F_DONE))
- error = msleep(crp, &as->as_lock, 0, "gssaes", 0);
+ while (!(crp->crp_flags & CRYPTO_F_DONE))
+ (void)msleep(crp, &as->as_lock, 0, "gssaes", 0);
mtx_unlock(&as->as_lock);
}
@@ -321,7 +318,6 @@
{
struct aes_state *as = ks->ks_priv;
struct cryptop *crp;
- int error;
crp = crypto_getreq(as->as_session_sha1, M_WAITOK);
@@ -332,13 +328,12 @@
crypto_use_mbuf(crp, inout);
crp->crp_opaque = as;
crp->crp_callback = aes_crypto_cb;
-
- error = crypto_dispatch(crp);
+ crypto_dispatch(crp);
if (!CRYPTO_SESS_SYNC(as->as_session_sha1)) {
mtx_lock(&as->as_lock);
- if (!error && !(crp->crp_flags & CRYPTO_F_DONE))
- error = msleep(crp, &as->as_lock, 0, "gssaes", 0);
+ if (!(crp->crp_flags & CRYPTO_F_DONE))
+ (void)msleep(crp, &as->as_lock, 0, "gssaes", 0);
mtx_unlock(&as->as_lock);
}
Index: sys/net/if_ovpn.c
===================================================================
--- sys/net/if_ovpn.c
+++ sys/net/if_ovpn.c
@@ -1812,12 +1812,8 @@
atomic_add_int(&peer->refcount, 1);
if (_ovpn_lock_trackerp != NULL)
OVPN_RUNLOCK(sc);
- ret = crypto_dispatch(crp);
- if (ret) {
- OVPN_COUNTER_ADD(sc, lost_data_pkts_out, 1);
- }
-
- return (ret);
+ crypto_dispatch(crp);
+ return (0);
}
/*
@@ -2091,7 +2087,6 @@
struct cryptop *crp;
struct ovpn_kpeer *peer;
size_t ohdrlen;
- int ret;
uint8_t op;
OVPN_RLOCK_TRACKER;
@@ -2204,11 +2199,7 @@
atomic_add_int(&sc->refcount, 1);
OVPN_RUNLOCK(sc);
- ret = crypto_dispatch(crp);
- if (ret != 0) {
- OVPN_COUNTER_ADD(sc, lost_data_pkts_in, 1);
- }
-
+ crypto_dispatch(crp);
return (true);
}
Index: sys/netipsec/xform_ah.c
===================================================================
--- sys/netipsec/xform_ah.c
+++ sys/netipsec/xform_ah.c
@@ -673,9 +673,10 @@
xd->cryptoid = cryptoid;
xd->vnet = curvnet;
if (V_async_crypto)
- return (crypto_dispatch_async(crp, CRYPTO_ASYNC_ORDERED));
+ crypto_dispatch_async(crp, CRYPTO_ASYNC_ORDERED);
else
- return (crypto_dispatch(crp));
+ crypto_dispatch(crp);
+ return (0);
bad:
m_freem(m);
key_freesav(&sav);
@@ -720,7 +721,8 @@
crypto_freesession(cryptoid);
xd->cryptoid = crp->crp_session;
CURVNET_RESTORE();
- return (crypto_dispatch(crp));
+ crypto_dispatch(crp);
+ return (0);
}
AHSTAT_INC(ahs_noxform);
DPRINTF(("%s: crypto error %d\n", __func__, crp->crp_etype));
@@ -1058,9 +1060,10 @@
xd->vnet = curvnet;
if (V_async_crypto)
- return (crypto_dispatch_async(crp, CRYPTO_ASYNC_ORDERED));
+ crypto_dispatch_async(crp, CRYPTO_ASYNC_ORDERED);
else
- return (crypto_dispatch(crp));
+ crypto_dispatch(crp);
+ return (0);
bad:
if (m)
m_freem(m);
@@ -1102,7 +1105,8 @@
crypto_freesession(cryptoid);
xd->cryptoid = crp->crp_session;
CURVNET_RESTORE();
- return (crypto_dispatch(crp));
+ crypto_dispatch(crp);
+ return (0);
}
AHSTAT_INC(ahs_noxform);
DPRINTF(("%s: crypto error %d\n", __func__, crp->crp_etype));
Index: sys/netipsec/xform_esp.c
===================================================================
--- sys/netipsec/xform_esp.c
+++ sys/netipsec/xform_esp.c
@@ -462,9 +462,10 @@
crp->crp_iv_start = skip + hlen - sav->ivlen;
if (V_async_crypto)
- return (crypto_dispatch_async(crp, CRYPTO_ASYNC_ORDERED));
+ crypto_dispatch_async(crp, CRYPTO_ASYNC_ORDERED);
else
- return (crypto_dispatch(crp));
+ crypto_dispatch(crp);
+ return (0);
crp_aad_fail:
free(xd, M_ESP);
@@ -512,7 +513,8 @@
crypto_freesession(cryptoid);
xd->cryptoid = crp->crp_session;
CURVNET_RESTORE();
- return (crypto_dispatch(crp));
+ crypto_dispatch(crp);
+ return (0);
}
/* EBADMSG indicates authentication failure. */
@@ -947,9 +949,10 @@
}
if (V_async_crypto)
- return (crypto_dispatch_async(crp, CRYPTO_ASYNC_ORDERED));
+ crypto_dispatch_async(crp, CRYPTO_ASYNC_ORDERED);
else
- return (crypto_dispatch(crp));
+ crypto_dispatch(crp);
+ return (0);
crp_aad_fail:
free(xd, M_ESP);
@@ -994,7 +997,8 @@
crypto_freesession(cryptoid);
xd->cryptoid = crp->crp_session;
CURVNET_RESTORE();
- return (crypto_dispatch(crp));
+ crypto_dispatch(crp);
+ return (0);
}
ESPSTAT_INC(esps_noxform);
DPRINTF(("%s: crypto error %d\n", __func__, crp->crp_etype));
Index: sys/netipsec/xform_ipcomp.c
===================================================================
--- sys/netipsec/xform_ipcomp.c
+++ sys/netipsec/xform_ipcomp.c
@@ -268,7 +268,8 @@
crp->crp_session = xd->cryptoid = sav->tdb_cryptoid;
SECASVAR_UNLOCK(sav);
- return crypto_dispatch(crp);
+ crypto_dispatch(crp);
+ return (0);
bad:
m_freem(m);
key_freesav(&sav);
@@ -312,7 +313,8 @@
crypto_freesession(cryptoid);
xd->cryptoid = crp->crp_session;
CURVNET_RESTORE();
- return (crypto_dispatch(crp));
+ crypto_dispatch(crp);
+ return (0);
}
IPCOMPSTAT_INC(ipcomps_noxform);
DPRINTF(("%s: crypto error %d\n", __func__, crp->crp_etype));
@@ -512,7 +514,8 @@
crp->crp_callback = ipcomp_output_cb;
crp->crp_opaque = xd;
- return crypto_dispatch(crp);
+ crypto_dispatch(crp);
+ return (0);
bad:
if (m)
m_freem(m);
@@ -554,7 +557,8 @@
crypto_freesession(cryptoid);
xd->cryptoid = crp->crp_session;
CURVNET_RESTORE();
- return (crypto_dispatch(crp));
+ crypto_dispatch(crp);
+ return (0);
}
IPCOMPSTAT_INC(ipcomps_noxform);
DPRINTF(("%s: crypto error %d\n", __func__, crp->crp_etype));
Index: sys/opencrypto/crypto.c
===================================================================
--- sys/opencrypto/crypto.c
+++ sys/opencrypto/crypto.c
@@ -1407,7 +1407,7 @@
}
#endif
-static int
+static void
crypto_dispatch_one(struct cryptop *crp, int hint)
{
struct cryptocap *cap;
@@ -1428,8 +1428,8 @@
cap = crp->crp_session->cap;
if (!atomic_load_int(&cap->cc_qblocked)) {
result = crypto_invoke(cap, crp, hint);
- if (result != ERESTART)
- return (result);
+ if (result == 0)
+ return;
/*
* The driver ran out of resources, put the request on the
@@ -1437,16 +1437,15 @@
*/
}
crypto_batch_enqueue(crp);
- return (0);
}
-int
+void
crypto_dispatch(struct cryptop *crp)
{
- return (crypto_dispatch_one(crp, 0));
+ crypto_dispatch_one(crp, 0);
}
-int
+void
crypto_dispatch_async(struct cryptop *crp, int flags)
{
struct crypto_ret_worker *ret_worker;
@@ -1456,7 +1455,8 @@
* The driver issues completions asynchonously, don't bother
* deferring dispatch to a worker thread.
*/
- return (crypto_dispatch(crp));
+ crypto_dispatch(crp);
+ return;
}
#ifdef INVARIANTS
@@ -1474,7 +1474,6 @@
}
TASK_INIT(&crp->crp_task, 0, crypto_task_invoke, crp);
taskqueue_enqueue(crypto_tq, &crp->crp_task);
- return (0);
}
void
@@ -1486,8 +1485,7 @@
while ((crp = TAILQ_FIRST(crpq)) != NULL) {
hint = TAILQ_NEXT(crp, crp_next) != NULL ? CRYPTO_HINT_MORE : 0;
TAILQ_REMOVE(crpq, crp, crp_next);
- if (crypto_dispatch_one(crp, hint) != 0)
- crypto_batch_enqueue(crp);
+ crypto_dispatch_one(crp, hint);
}
}
Index: sys/opencrypto/cryptodev.h
===================================================================
--- sys/opencrypto/cryptodev.h
+++ sys/opencrypto/cryptodev.h
@@ -623,9 +623,9 @@
device_t crypto_find_device_byhid(int hid);
int crypto_getcaps(int hid);
int crypto_unregister_all(uint32_t driverid);
-int crypto_dispatch(struct cryptop *crp);
+void crypto_dispatch(struct cryptop *crp);
#define CRYPTO_ASYNC_ORDERED 0x1 /* complete in order dispatched */
-int crypto_dispatch_async(struct cryptop *crp, int flags);
+void crypto_dispatch_async(struct cryptop *crp, int flags);
void crypto_dispatch_batch(struct cryptopq *crpq, int flags);
#define CRYPTO_SYMQ 0x1
int crypto_unblock(uint32_t, int);
Index: sys/opencrypto/cryptodev.c
===================================================================
--- sys/opencrypto/cryptodev.c
+++ sys/opencrypto/cryptodev.c
@@ -813,11 +813,7 @@
* results in a lock order reversal between crypto_dispatch forced
* entry and the crypto_done callback into us.
*/
- error = crypto_dispatch(crp);
- if (error != 0) {
- SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__);
- goto bail;
- }
+ crypto_dispatch(crp);
mtx_lock(&cse->lock);
while (!cod->done)
@@ -1016,11 +1012,7 @@
* results in a lock order reversal between crypto_dispatch forced
* entry and the crypto_done callback into us.
*/
- error = crypto_dispatch(crp);
- if (error != 0) {
- SDT_PROBE1(opencrypto, dev, ioctl, error, __LINE__);
- goto bail;
- }
+ crypto_dispatch(crp);
mtx_lock(&cse->lock);
while (!cod->done)
Index: sys/opencrypto/ktls_ocf.c
===================================================================
--- sys/opencrypto/ktls_ocf.c
+++ sys/opencrypto/ktls_ocf.c
@@ -200,15 +200,14 @@
oo.os = os;
oo.done = false;
+ error = 0;
crp->crp_opaque = &oo;
for (;;) {
async = !CRYPTO_SESS_SYNC(crp->crp_session);
crp->crp_callback = async ? ktls_ocf_callback_async :
ktls_ocf_callback_sync;
- error = crypto_dispatch(crp);
- if (error)
- break;
+ crypto_dispatch(crp);
if (async) {
mtx_lock(&os->lock);
while (!oo.done)
@@ -240,11 +239,7 @@
crp->crp_etype = 0;
crp->crp_flags &= ~CRYPTO_F_DONE;
counter_u64_add(ocf_retries, 1);
- error = crypto_dispatch(crp);
- if (error != 0) {
- crypto_destroyreq(crp);
- ktls_encrypt_cb(state, error);
- }
+ crypto_dispatch(crp);
return (0);
}
@@ -258,14 +253,10 @@
ktls_ocf_dispatch_async(struct ktls_ocf_encrypt_state *state,
struct cryptop *crp)
{
- int error;
-
crp->crp_opaque = state;
crp->crp_callback = ktls_ocf_dispatch_async_cb;
- error = crypto_dispatch(crp);
- if (error != 0)
- crypto_destroyreq(crp);
- return (error);
+ crypto_dispatch(crp);
+ return (0);
}
static int
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Apr 22, 12:03 AM (12 h, 27 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
31940140
Default Alt Text
D35383.id107601.diff (16 KB)
Attached To
Mode
D35383: crypto: Remove the return value from crypto_dispatch(_async)()
Attached
Detach File
Event Timeline
Log In to Comment