summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_pool.c
diff options
context:
space:
mode:
authorart <art@openbsd.org>2008-11-25 13:05:51 +0000
committerart <art@openbsd.org>2008-11-25 13:05:51 +0000
commit9ee90cd7ca57b985b9c88425d0257e75b671c5e3 (patch)
treeb6aec07b20b4ea08382c645632b244f079b23e50 /sys/kern/subr_pool.c
parentFactor increases are not needed, +1 appears to work as well. (diff)
downloadwireguard-openbsd-9ee90cd7ca57b985b9c88425d0257e75b671c5e3.tar.xz
wireguard-openbsd-9ee90cd7ca57b985b9c88425d0257e75b671c5e3.zip
Make sure that equal elements always compare equal. Logic error spotted
by otto@ ok otto@
Diffstat (limited to 'sys/kern/subr_pool.c')
-rw-r--r--sys/kern/subr_pool.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/kern/subr_pool.c b/sys/kern/subr_pool.c
index c0db7c186d3..04b85d9a142 100644
--- a/sys/kern/subr_pool.c
+++ b/sys/kern/subr_pool.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: subr_pool.c,v 1.69 2008/11/24 21:36:07 art Exp $ */
+/* $OpenBSD: subr_pool.c,v 1.70 2008/11/25 13:05:51 art Exp $ */
/* $NetBSD: subr_pool.c,v 1.61 2001/09/26 07:14:56 chs Exp $ */
/*-
@@ -140,9 +140,11 @@ phtree_compare(struct pool_item_header *a, struct pool_item_header *b)
{
long diff = (vaddr_t)a->ph_page - (vaddr_t)b->ph_page;
if (diff < 0)
- return -((a->ph_pagesize + diff) > 0);
- else
+ return -(-diff < a->ph_pagesize);
+ else if (diff > 0)
return (diff > b->ph_pagesize);
+ else
+ return (0);
}
SPLAY_PROTOTYPE(phtree, pool_item_header, ph_node, phtree_compare);