SoC: linuxolator update: first patch
John Baldwin
jhb at freebsd.org
Tue Aug 15 23:44:05 UTC 2006
On Tuesday 15 August 2006 11:20, Suleiman Souhlal wrote:
> John Baldwin wrote:
> >
> >>+ KASSERT(em != NULL, ("proc_init: emuldata not found in exec case.\n"));
> >>+ }
> >>+
> >>+ em->child_clear_tid = NULL;
> >>+ em->child_set_tid = NULL;
> >>+
> >>+ /* allocate the shared struct only in clone()/fork cases
> >>+ * in the case of clone() td = calling proc and child = pid of
> >>+ * the newly created proc
> >>+ */
> >>+ if (child != 0) {
> >>+ if (flags & CLONE_VM) {
> >>+ /* lookup the parent */
> >>+ p_em = em_find(td->td_proc, EMUL_LOCKED);
> >>+ KASSERT(p_em != NULL, ("proc_init: parent emuldata not found for
> >>CLONE_VM\n"));
> >>+ em->shared = p_em->shared;
> >>+ em->shared->refs++;
> >>
> >>This is unsafe. Please use the functions in sys/refcount.h.
> >
> >
> > Well, in this case he's already holding a lock. If he always holds a lock
> > when accessing and modifying refs, then refcount_*() would only add
overhead.
>
> Isn't he holding the wrong lock (emul_lock vs emul_shared_lock)?
Maybe. I think those should be merged into one lock anyway. :)
--
John Baldwin
_______________________________________________
freebsd-current at freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscribe at freebsd.org"
More information about the freebsd-emulation
mailing list