diff options
-rw-r--r-- | sys/kern/sys_generic.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c index 50bc91d..5e12b1d 100644 --- a/sys/kern/sys_generic.c +++ b/sys/kern/sys_generic.c @@ -1600,10 +1600,11 @@ static void selfdfree(struct seltd *stp, struct selfd *sfp) { STAILQ_REMOVE(&stp->st_selq, sfp, selfd, sf_link); - mtx_lock(sfp->sf_mtx); - if (sfp->sf_si) + if (sfp->sf_si != NULL) { + mtx_lock(sfp->sf_mtx); TAILQ_REMOVE(&sfp->sf_si->si_tdlist, sfp, sf_threads); - mtx_unlock(sfp->sf_mtx); + mtx_unlock(sfp->sf_mtx); + } uma_zfree(selfd_zone, sfp); } |