Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/cesa/cesa.c
Show First 20 Lines • Show All 1,522 Lines • ▼ Show 20 Lines | cesa_intr(void *arg) | ||||
cesa_sync_dma_mem(&sc->sc_requests_cdm, BUS_DMASYNC_POSTREAD | | cesa_sync_dma_mem(&sc->sc_requests_cdm, BUS_DMASYNC_POSTREAD | | ||||
BUS_DMASYNC_POSTWRITE); | BUS_DMASYNC_POSTWRITE); | ||||
STAILQ_FOREACH_SAFE(cr, &requests, cr_stq, tmp) { | STAILQ_FOREACH_SAFE(cr, &requests, cr_stq, tmp) { | ||||
bus_dmamap_sync(sc->sc_data_dtag, cr->cr_dmap, | bus_dmamap_sync(sc->sc_data_dtag, cr->cr_dmap, | ||||
BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE); | BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE); | ||||
cr->cr_crp->crp_etype = sc->sc_error; | cr->cr_crp->crp_etype = sc->sc_error; | ||||
if (cr->cr_cs->cs_hlen != 0 && cr->cr_crp->crp_etype == 0) { | if (cr->cr_cs->cs_hlen != 0 && cr->cr_crp->crp_etype == 0 && | ||||
(crp->crp_op & CRYPTO_OP_SKIP_DIGEST) == 0) { | |||||
if (cr->cr_crp->crp_op & CRYPTO_OP_VERIFY_DIGEST) { | if (cr->cr_crp->crp_op & CRYPTO_OP_VERIFY_DIGEST) { | ||||
crypto_copydata(cr->cr_crp, | crypto_copydata(cr->cr_crp, | ||||
cr->cr_crp->crp_digest_start, | cr->cr_crp->crp_digest_start, | ||||
cr->cr_cs->cs_hlen, hash); | cr->cr_cs->cs_hlen, hash); | ||||
if (timingsafe_bcmp(hash, cr->cr_csd->csd_hash, | if (timingsafe_bcmp(hash, cr->cr_csd->csd_hash, | ||||
cr->cr_cs->cs_hlen) != 0) | cr->cr_cs->cs_hlen) != 0) | ||||
cr->cr_crp->crp_etype = EBADMSG; | cr->cr_crp->crp_etype = EBADMSG; | ||||
} else | } else | ||||
▲ Show 20 Lines • Show All 253 Lines • Show Last 20 Lines |