summaryrefslogtreecommitdiffstats
path: root/sys/crypto
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2008-08-09 19:42:37 +0000
committerpjd <pjd@FreeBSD.org>2008-08-09 19:42:37 +0000
commit1be547932b035d1775c66c5f17b6a67174c5e575 (patch)
treef033a95fa4fcd92cf9958b1d2496824a9970c566 /sys/crypto
parent7629f5529093add18ca5ec944e41d89d483d7026 (diff)
downloadFreeBSD-src-1be547932b035d1775c66c5f17b6a67174c5e575.zip
FreeBSD-src-1be547932b035d1775c66c5f17b6a67174c5e575.tar.gz
Sessions in-use are at the end of the queue, so use TAILQ_FOREACH_REVERSE()
when looking for them. Idea from: Patrick Lamaiziere <patfbsd@davenulle.org>
Diffstat (limited to 'sys/crypto')
-rw-r--r--sys/crypto/via/padlock.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/crypto/via/padlock.c b/sys/crypto/via/padlock.c
index 9ac41b2..9818f3e 100644
--- a/sys/crypto/via/padlock.c
+++ b/sys/crypto/via/padlock.c
@@ -59,7 +59,7 @@ __FBSDID("$FreeBSD$");
struct padlock_softc {
int32_t sc_cid;
uint32_t sc_sid;
- TAILQ_HEAD(, padlock_session) sc_sessions;
+ TAILQ_HEAD(padlock_sessions_head, padlock_session) sc_sessions;
struct rwlock sc_sessions_lock;
};
@@ -259,7 +259,8 @@ padlock_freesession(device_t dev, uint64_t tid)
uint32_t sid = ((uint32_t)tid) & 0xffffffff;
rw_wlock(&sc->sc_sessions_lock);
- TAILQ_FOREACH(ses, &sc->sc_sessions, ses_next) {
+ TAILQ_FOREACH_REVERSE(ses, &sc->sc_sessions, padlock_sessions_head,
+ ses_next) {
if (ses->ses_id == sid)
break;
}
@@ -323,7 +324,8 @@ padlock_process(device_t dev, struct cryptop *crp, int hint __unused)
}
rw_rlock(&sc->sc_sessions_lock);
- TAILQ_FOREACH(ses, &sc->sc_sessions, ses_next) {
+ TAILQ_FOREACH_REVERSE(ses, &sc->sc_sessions, padlock_sessions_head,
+ ses_next) {
if (ses->ses_id == (crp->crp_sid & 0xffffffff))
break;
}
OpenPOWER on IntegriCloud