Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 23 Jul 2007 17:50:30 -0400
From:      Jung-uk Kim <jkim@FreeBSD.org>
To:        Doug Barton <dougb@FreeBSD.org>
Cc:        Marcus Alves Grando <mnag@FreeBSD.org>, Attilio Rao <attilio@FreeBSD.org>, src-committers@FreeBSD.org, cvs-all@FreeBSD.org, cvs-src@FreeBSD.org
Subject:   Re: cvs commit: src/sys/kern kern_kse.c kern_thread.c src/sys/sys proc.h
Message-ID:  <200707231750.34776.jkim@FreeBSD.org>
In-Reply-To: <46A515B9.6060608@FreeBSD.org>
References:  <200707231452.l6NEqMot074554@repoman.freebsd.org> <46A4F893.20609@FreeBSD.org> <46A515B9.6060608@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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@freebsd.org mailing list
> >> http://lists.freebsd.org/mailman/listinfo/cvs-src
> >> To unsubscribe, send any mail to
> >> "cvs-src-unsubscribe@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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200707231750.34776.jkim>