aboutsummaryrefslogtreecommitdiff
path: root/sys/netipsec
diff options
context:
space:
mode:
authorMateusz Guzik <mjg@FreeBSD.org>2021-11-03 18:50:41 +0000
committerMateusz Guzik <mjg@FreeBSD.org>2021-11-14 20:17:34 +0000
commite469b16d0b91c0c37427a19d574c112c9eaba6e5 (patch)
tree0df4249df9a67c9057983b408d1a39cc785d9dd6 /sys/netipsec
parent2f35e7d9fa03f27543f347cd6277af5bfc6a7e95 (diff)
Diffstat (limited to 'sys/netipsec')
-rw-r--r--sys/netipsec/key.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/netipsec/key.c b/sys/netipsec/key.c
index 9a810fa49931..e2e1d76911ec 100644
--- a/sys/netipsec/key.c
+++ b/sys/netipsec/key.c
@@ -2147,10 +2147,12 @@ key_getnewspid(void)
{
struct secpolicy *sp;
uint32_t newid = 0;
- int count = V_key_spi_trycnt; /* XXX */
+ int tries, limit;
SPTREE_WLOCK_ASSERT();
- while (count--) {
+
+ limit = atomic_load_int(&V_key_spi_trycnt);
+ for (tries = 0; tries < limit; tries++) {
if (V_policy_id == ~0) /* overflowed */
newid = V_policy_id = 1;
else
@@ -2162,7 +2164,7 @@ key_getnewspid(void)
if (sp == NULL)
break;
}
- if (count == 0 || newid == 0) {
+ if (tries == limit || newid == 0) {
ipseclog((LOG_DEBUG, "%s: failed to allocate policy id.\n",
__func__));
return (0);