cvs commit: src/sys/kern kern_kse.c kern_thread.c src/sys/sys proc.h

Jung-uk Kim jkim at FreeBSD.org
Mon Jul 23 22:14:51 UTC 2007


On Monday 23 July 2007 04:55 pm, Doug Barton wrote:
> Marcus Alves Grando wrote:
> > Attilio Rao wrote:
> >> attilio     2007-07-23 14:52:22 UTC
> >>
> >>   FreeBSD src repository
> >>
> >>   Modified files:
> >>     sys/kern             kern_kse.c kern_thread.c
> >> sys/sys              proc.h   Log:
> >>   Actually, KSE kernel bits locking is broken and can lead
> >> likely to dangerous races.
> >>   Fix this problems adding correct locking for the members of
> >> 'struct kse_upcall' and other struct proc/struct thread related
> >> members. For the moment, just leave ku_mflag and ku_flags "lazy"
> >> locked. While here, cleanup the code removing the function
> >> kse_GC() (unused), and merging upcall_link(), upcall_unlink(),
> >> upcall_stash() in their respective callers (static functions,
> >> very short and only called in one place).
> >>     Reported by: pav
> >>   Tested by: pav (on some pointyhat cluster nodes)
> >>   Approved by: jeff
> >>   Approved by: re
> >>   Sponsorized by: NGX Italy (http://www.ngx.it)
> >>     Revision  Changes    Path
> >>   1.232     +69 -82    src/sys/kern/kern_kse.c
> >>   1.251     +2 -0      src/sys/kern/kern_thread.c
> >>   1.488     +0 -1      src/sys/sys/proc.h
> >> _______________________________________________
> >> cvs-src at freebsd.org mailing list
> >> http://lists.freebsd.org/mailman/listinfo/cvs-src
> >> To unsubscribe, send any mail to
> >> "cvs-src-unsubscribe at freebsd.org"
> >>
> >> ------------------------------------------------------
> >> http://www.FreeBSD.org/cgi/cvsweb.cgi/src/sys/kern/kern_kse.c.di
> >>ff?&r1=1.231&r2=1.232
> >>
> >> http://www.FreeBSD.org/cgi/cvsweb.cgi/src/sys/kern/kern_thread.c
> >>.diff?&r1=1.250&r2=1.251
> >>
> >> http://www.FreeBSD.org/cgi/cvsweb.cgi/src/sys/sys/proc.h.diff?&r
> >>1=1.487&r2=1.488
> >
> > Wno-pointer-sign -fformat-extensions -nostdinc  -I.
> > -I/usr/src/sys -I/usr/src/sys/contrib/altq -D_KERNEL
> > -DHAVE_KERNEL_OPTION_HEADERS -include opt_global.h -fno-common
> > -finline-limit=8000 --param inline-unit-growth=100 --param
> > large-function-growth=1000 -mno-align-long-strings
> > -mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow -mno-sse
> > -mno-sse2 -mno-sse3 -ffreestanding -Werror
> > /usr/src/sys/kern/kern_kse.c
> > cc1: warnings being treated as errors
> > /usr/src/sys/kern/kern_kse.c:87: warning: 'upcall_free' defined
> > but not used
> > *** Error code 1
>
> Me Too. Removing the prototype and the function definition got the
> kernel to compile, but I'm a little scared to boot it. :)

Probably it should be something like this?

@@ -60,9 +60,6 @@
 extern struct mtx kse_lock;
 
 
-TAILQ_HEAD(, kse_upcall) zombie_upcalls =
-       TAILQ_HEAD_INITIALIZER(zombie_upcalls);
-
 static int thread_update_usr_ticks(struct thread *td);
 static void thread_alloc_spare(struct thread *td);
 static struct thread *thread_schedule_upcall(struct thread *td, struct kse_upcall *ku);
@@ -106,7 +103,7 @@
		td->td_upcall->ku_owner = NULL;
		TAILQ_REMOVE(&td->td_upcall->ku_proc->p_upcalls, td->td_upcall,
		    ku_link);
-		TAILQ_INSERT_HEAD(&zombie_upcalls, td->td_upcall, ku_link);
+		upcall_free(td->td_upcall);
                mtx_unlock_spin(&kse_lock);
                td->td_upcall = NULL;
        }
---------------------

Jung-uk Kim


More information about the cvs-src mailing list