From owner-cvs-all@FreeBSD.ORG Mon Sep 11 18:31:00 2006 Return-Path: X-Original-To: cvs-all@freebsd.org Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7DE1F16A40F; Mon, 11 Sep 2006 18:31:00 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (66-23-211-162.clients.speedfactory.net [66.23.211.162]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9ED0343D4C; Mon, 11 Sep 2006 18:30:59 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from localhost.corp.yahoo.com (john@localhost [127.0.0.1]) (authenticated bits=0) by server.baldwin.cx (8.13.6/8.13.6) with ESMTP id k8BIUvrK018749; Mon, 11 Sep 2006 14:30:57 -0400 (EDT) (envelope-from jhb@freebsd.org) From: John Baldwin To: Max Laier Date: Mon, 11 Sep 2006 14:28:01 -0400 User-Agent: KMail/1.9.1 References: <200609101651.k8AGpuqm069774@repoman.freebsd.org> <200609111048.19397.jhb@freebsd.org> <200609111829.58796.max@love2party.net> In-Reply-To: <200609111829.58796.max@love2party.net> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200609111428.01836.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (server.baldwin.cx [127.0.0.1]); Mon, 11 Sep 2006 14:30:57 -0400 (EDT) X-Virus-Scanned: ClamAV 0.88.3/1857/Mon Sep 11 11:12:56 2006 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=4.2 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on server.baldwin.cx Cc: cvs-src@freebsd.org, Martin Blapp , src-committers@freebsd.org, cvs-all@freebsd.org Subject: Re: cvs commit: src/sys/kern tty.c X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Sep 2006 18:31:00 -0000 On Monday 11 September 2006 12:29, Max Laier wrote: > On Monday 11 September 2006 16:48, John Baldwin wrote: > > On Sunday 10 September 2006 12:51, Martin Blapp wrote: > > > mbr 2006-09-10 16:51:56 UTC > > > > > > FreeBSD src repository > > > > > > Modified files: > > > sys/kern tty.c > > > Log: > > > Fix locking race in ttymodem(). The locking of the proctree happens > > > too late and opens a small race window before tp->t_session->s_leader > > > is accessed. In case tp->t_session has just been set to NULL > > > elsewhere, we get a panic(). > > > > > > This fix is a bandaid until someone else fixes the whole locking in > > > the tty subsystem. Definitly more work needs to be done. > > > > > > MFC after: 1 week > > > Reviewed by: mlaier > > > PR: kern/103101 > > > > Did you ever try putting a 'mtx_assert(&Giant, MA_OWNED);' in place to > > see if Giant is held there? Until the tty system is locked, the proper > > fix is to put Giant back on top of it, not abuse the wrong lock. > > Abusing the wrong lock is only going to narrow the race, not fix it. > > Unless, of course, the offending call path (the one entering the tty code > w/o Giant) holds the "wrong lock", which - in this case - is likely as a > change of t_session means something was fiddling with the proctree. That doesn't wash if in this code path _neither_ lock was held prior to this commit. > Martin was trying to get you and others involved with this beforehand. > This commit is - as indicated in the commit message - a bandaid that > fixes the apparent problem. In Martin's installation this problem > manifests in panic()ing every other hour - I don't think that's a system > state we want to ship as FreeBSD 6.2. This is why we decided to commit > the bandaid now, after Martin's other requests for help and input timed > out. Seems like the plan worked and people start looking at this, now ;) I've told Martin numerous times that t_session is not locked by the proctree lock and thus by default it is covered by Giant. I think much of the session stuff still belongs under Giant in fact. -- John Baldwin