Module Name: src Committed By: knakahara Date: Mon Apr 5 01:23:15 UTC 2021
Modified Files: src/sys/opencrypto: cryptosoft.c Log Message: refactor: reduce changing swcr_sesnum To generate a diff of this commit: cvs rdiff -u -r1.58 -r1.59 src/sys/opencrypto/cryptosoft.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/opencrypto/cryptosoft.c diff -u src/sys/opencrypto/cryptosoft.c:1.58 src/sys/opencrypto/cryptosoft.c:1.59 --- src/sys/opencrypto/cryptosoft.c:1.58 Mon Apr 5 01:22:22 2021 +++ src/sys/opencrypto/cryptosoft.c Mon Apr 5 01:23:15 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: cryptosoft.c,v 1.58 2021/04/05 01:22:22 knakahara Exp $ */ +/* $NetBSD: cryptosoft.c,v 1.59 2021/04/05 01:23:15 knakahara Exp $ */ /* $FreeBSD: src/sys/opencrypto/cryptosoft.c,v 1.2.2.1 2002/11/21 23:34:23 sam Exp $ */ /* $OpenBSD: cryptosoft.c,v 1.35 2002/04/26 08:43:50 deraadt Exp $ */ @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: cryptosoft.c,v 1.58 2021/04/05 01:22:22 knakahara Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cryptosoft.c,v 1.59 2021/04/05 01:23:15 knakahara Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -775,32 +775,31 @@ swcr_newsession(void *arg, u_int32_t *si i = 1; /* NB: to silence compiler warning */ if (swcr_sessions == NULL || i == swcr_sesnum) { + u_int32_t newnum; + struct swcr_data **newsessions; + if (swcr_sessions == NULL) { i = 1; /* We leave swcr_sessions[0] empty */ - swcr_sesnum = CRYPTO_SW_SESSIONS; + newnum = CRYPTO_SW_SESSIONS; } else - swcr_sesnum *= 2; + newnum = swcr_sesnum *= 2; - swd = kmem_zalloc(swcr_sesnum * sizeof(struct swcr_data *), + newsessions = kmem_zalloc(newnum * sizeof(struct swcr_data *), KM_NOSLEEP); - if (swd == NULL) { - /* Reset session number */ - if (swcr_sesnum == CRYPTO_SW_SESSIONS) - swcr_sesnum = 0; - else - swcr_sesnum /= 2; + if (newsessions == NULL) { return ENOBUFS; } /* Copy existing sessions */ if (swcr_sessions) { - memcpy(swd, swcr_sessions, - (swcr_sesnum / 2) * sizeof(struct swcr_data *)); + memcpy(newsessions, swcr_sessions, + swcr_sesnum * sizeof(struct swcr_data *)); kmem_free(swcr_sessions, - (swcr_sesnum / 2) * sizeof(struct swcr_data *)); + swcr_sesnum * sizeof(struct swcr_data *)); } - swcr_sessions = swd; + swcr_sesnum = newnum; + swcr_sessions = newsessions; } swd = &swcr_sessions[i];