Date: Tue, 26 May 2009 18:22:51 -0600 (MDT) From: "M. Warner Losh" <imp@bsdimp.com> To: kmacy@FreeBSD.org Cc: src-committers@FreeBSD.org, jhb@FreeBSD.org, svn-src-user@FreeBSD.org Subject: Re: svn commit: r192604 - in user/kmacy/releng_7_2_fcs/sys: dev/hwpmc sys Message-ID: <20090526.182251.-409398290.imp@bsdimp.com> In-Reply-To: <3c1674c90905261118y282d9b0fn7d54630f507d8363@mail.gmail.com> References: <200905222145.n4MLjhm3019802@svn.freebsd.org> <200905260830.36831.jhb@freebsd.org> <3c1674c90905261118y282d9b0fn7d54630f507d8363@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
In message: <3c1674c90905261118y282d9b0fn7d54630f507d8363@mail.gmail.co= m> Kip Macy <kmacy@freebsd.org> writes: : On Tue, May 26, 2009 at 5:30 AM, John Baldwin <jhb@freebsd.org> wrote= : : > On Friday 22 May 2009 5:45:43 pm Kip Macy wrote: : >> Author: kmacy : >> Date: Fri May 22 21:45:43 2009 : >> New Revision: 192604 : >> URL: http://svn.freebsd.org/changeset/base/192604 : >> : >> Log: : >> =A0 - remove pmc_kthread_mtx : >> =A0 - replace sleep/wakeup on kthread with a condvar : > : > If you do not sleep on the kthread/kproc when waiting for a kthread= to : > exit, then you open up a race window. =A0Usually this matters more = for : > any kthreads that live in a module since the race allows the module= to : > be unmapped before the thread is finished executing code from the m= odule : > resulting in a fatal page fault in the kernel. : = : = : Yes, that is why the kthread explicitly calls cv_signal after clearin= g : the kthread pointer. The race here is that any kthread is still executing code after the module is unloaded. This fix doesn't solve that race, since the only way to solve it is to have the scheduler tell you when the thread is gone, which is what the sleep/wakup on the kthread does. Warner
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090526.182251.-409398290.imp>