From 73f2e5f759e795e77a0c1c659e6ed4e251459990 Mon Sep 17 00:00:00 2001 From: Mateusz Guzik Date: Thu, 23 Oct 2014 15:35:47 +0000 Subject: [PATCH] Avoid taking the lock in selfdfree when not needed. --- sys/kern/sys_generic.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c index 50bc91dea01..5e12b1dd0eb 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); }