diff --git a/sys/kern/subr_rman.c b/sys/kern/subr_rman.c index f59327a124da..b17ea74d391c 100644 --- a/sys/kern/subr_rman.c +++ b/sys/kern/subr_rman.c @@ -61,6 +61,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -169,10 +170,12 @@ rman_manage_region(struct rman *rm, u_long start, u_long end) mtx_lock(rm->rm_mtx); /* Skip entries before us. */ - for (s = TAILQ_FIRST(&rm->rm_list); - s && s->r_end + 1 < r->r_start; - s = TAILQ_NEXT(s, r_link)) - ; + TAILQ_FOREACH(s, &rm->rm_list, r_link) { + if (s->r_end == ULONG_MAX) + break; + if (s->r_end + 1 >= r->r_start) + break; + } /* If we ran off the end of the list, insert at the tail. */ if (s == NULL) {