summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_event.c
diff options
context:
space:
mode:
authorpjd <pjd@FreeBSD.org>2006-06-02 13:18:59 +0000
committerpjd <pjd@FreeBSD.org>2006-06-02 13:18:59 +0000
commite8fbceff26cae4760c4895bde056ea8102a72e62 (patch)
treeeb51f527225bdd056e4926378d95d25a0bed7a61 /sys/kern/kern_event.c
parent77a3ee658784e37160b447717e2fc8a2528e046c (diff)
downloadFreeBSD-src-e8fbceff26cae4760c4895bde056ea8102a72e62.zip
FreeBSD-src-e8fbceff26cae4760c4895bde056ea8102a72e62.tar.gz
Use SLIST_FOREACH_SAFE() macro, because knote_drop() can free an element
which can be then used to find next element in the list. OK'ed by: jmg
Diffstat (limited to 'sys/kern/kern_event.c')
-rw-r--r--sys/kern/kern_event.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/kern/kern_event.c b/sys/kern/kern_event.c
index e629bbc..59527d6 100644
--- a/sys/kern/kern_event.c
+++ b/sys/kern/kern_event.c
@@ -1708,7 +1708,7 @@ knlist_destroy(struct knlist *knl)
void
knlist_cleardel(struct knlist *knl, struct thread *td, int islocked, int killkn)
{
- struct knote *kn;
+ struct knote *kn, *kn2;
struct kqueue *kq;
if (islocked)
@@ -1719,7 +1719,7 @@ again: /* need to reaquire lock since we have dropped it */
knl->kl_lock(knl->kl_lockarg);
}
- SLIST_FOREACH(kn, &knl->kl_list, kn_selnext) {
+ SLIST_FOREACH_SAFE(kn, &knl->kl_list, kn_selnext, kn2) {
kq = kn->kn_kq;
KQ_LOCK(kq);
if ((kn->kn_status & KN_INFLUX)) {
OpenPOWER on IntegriCloud