diff options
author | pjd <pjd@FreeBSD.org> | 2006-06-02 13:18:59 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2006-06-02 13:18:59 +0000 |
commit | e8fbceff26cae4760c4895bde056ea8102a72e62 (patch) | |
tree | eb51f527225bdd056e4926378d95d25a0bed7a61 /sys/kern/kern_event.c | |
parent | 77a3ee658784e37160b447717e2fc8a2528e046c (diff) | |
download | FreeBSD-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.c | 4 |
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)) { |