The itimer_fire() function is only used in realtimer_expire_l() and the proc locking has been already dealt there, so the PROC_UNLOCK() in itimer_fire() is wrong and should be removed.
See also: https://reviews.freebsd.org/D29746
Differential D49576
Remove extra PROC_UNLOCK() from itimer_fire() aly_aaronly.me on Sun, Mar 30, 12:36 AM. Authored by Tags None Referenced Files
Details
The itimer_fire() function is only used in realtimer_expire_l() and the proc locking has been already dealt there, so the PROC_UNLOCK() in itimer_fire() is wrong and should be removed. See also: https://reviews.freebsd.org/D29746
Diff Detail
Event TimelineComment Actions Did you observed the double unlock on the real system? I am asking because I suspect that the patch is based on local code reading only. Comment Actions No. I'm implementing the POSIX timers in DragonFly BSD based on the FreeBSD code.
Yah, I haven't yet dived into sigev_findtd() and was missing this detail. Thank you for the explanation. |