From owner-p4-projects@FreeBSD.ORG Tue Dec 5 04:38:55 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8CDD416A407; Tue, 5 Dec 2006 04:38:55 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6917416A415 for ; Tue, 5 Dec 2006 04:38:55 +0000 (UTC) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.FreeBSD.org (Postfix) with ESMTP id 43CD943CA2 for ; Tue, 5 Dec 2006 04:38:18 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id kB54csYT049067 for ; Tue, 5 Dec 2006 04:38:54 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id kB54csFf049064 for perforce@freebsd.org; Tue, 5 Dec 2006 04:38:54 GMT (envelope-from sam@freebsd.org) Date: Tue, 5 Dec 2006 04:38:54 GMT Message-Id: <200612050438.kB54csFf049064@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Cc: Subject: PERFORCE change 111105 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Dec 2006 04:38:55 -0000 http://perforce.freebsd.org/chv.cgi?CH=111105 Change 111105 by sam@sam_ebb on 2006/12/05 04:37:53 factor driver cleanup code into driver_finis Affected files ... .. //depot/projects/crypto/sys/opencrypto/crypto.c#3 edit Differences ... ==== //depot/projects/crypto/sys/opencrypto/crypto.c#3 (text+ko) ==== @@ -676,6 +676,27 @@ return err; } +static void +driver_finis(struct cryptocap *cap) +{ + u_int32_t ses, kops; + + CRYPTO_DRIVER_ASSERT(); + + ses = cap->cc_sessions; + kops = cap->cc_koperations; + bzero(cap, sizeof(*cap)); + if (ses != 0 || kops != 0) { + /* + * If there are pending sessions, + * just mark as invalid. + */ + cap->cc_flags |= CRYPTOCAP_F_CLEANUP; + cap->cc_sessions = ses; + cap->cc_koperations = kops; + } +} + /* * Unregister a crypto driver. If there are pending sessions using it, * leave enough information around so that subsequent calls using those @@ -686,7 +707,6 @@ crypto_unregister(u_int32_t driverid, int alg) { struct cryptocap *cap; - u_int32_t ses, kops; int i, err; CRYPTO_DRIVER_LOCK(); @@ -703,20 +723,8 @@ if (cap->cc_alg[i] != 0) break; - if (i == CRYPTO_ALGORITHM_MAX + 1) { - ses = cap->cc_sessions; - kops = cap->cc_koperations; - bzero(cap, sizeof(*cap)); - if (ses != 0 || kops != 0) { - /* - * If there are pending sessions, - * just mark as invalid. - */ - cap->cc_flags |= CRYPTOCAP_F_CLEANUP; - cap->cc_sessions = ses; - cap->cc_koperations = kops; - } - } + if (i == CRYPTO_ALGORITHM_MAX + 1) + driver_finis(cap); err = 0; } else err = EINVAL; @@ -736,28 +744,13 @@ crypto_unregister_all(u_int32_t driverid) { struct cryptocap *cap; - u_int32_t ses, kops; - int i, err; + int err; CRYPTO_DRIVER_LOCK(); cap = crypto_checkdriver(driverid); if (cap != NULL) { - for (i = CRYPTO_ALGORITHM_MIN; i <= CRYPTO_ALGORITHM_MAX; i++) { - cap->cc_alg[i] = 0; - cap->cc_max_op_len[i] = 0; - } - ses = cap->cc_sessions; - kops = cap->cc_koperations; - bzero(cap, sizeof(*cap)); - if (ses != 0 || kops != 0) { - /* - * If there are pending sessions, just mark as invalid. - */ - cap->cc_flags |= CRYPTOCAP_F_CLEANUP; - cap->cc_sessions = ses; - cap->cc_koperations = kops; - } + driver_finis(cap); err = 0; } else err = EINVAL;