From owner-svn-src-head@FreeBSD.ORG Sat Nov 8 14:39:56 2008 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B8601106567D; Sat, 8 Nov 2008 14:39:56 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from cmail.optima.ua (cmail.optima.ua [195.248.191.121]) by mx1.freebsd.org (Postfix) with ESMTP id C82BC8FC21; Sat, 8 Nov 2008 14:39:55 +0000 (UTC) (envelope-from mav@FreeBSD.org) X-Spam-Flag: SKIP X-Spam-Yversion: Spamooborona-2.1.0 Received: from [212.86.226.226] (account mav@alkar.net HELO mavbook.mavhome.dp.ua) by cmail.optima.ua (CommuniGate Pro SMTP 5.2.9) with ESMTPSA id 227345779; Sat, 08 Nov 2008 16:39:54 +0200 Message-ID: <4915A4BA.6090701@FreeBSD.org> Date: Sat, 08 Nov 2008 16:39:54 +0200 From: Alexander Motin User-Agent: Thunderbird 2.0.0.17 (X11/20081029) MIME-Version: 1.0 To: Attilio Rao References: <200811080625.mA86Pvhw003486@svn.freebsd.org> <3bbf2fe10811080513x2b8bd201gcf24562360374494@mail.gmail.com> In-Reply-To: <3bbf2fe10811080513x2b8bd201gcf24562360374494@mail.gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r184762 - head/sys/netgraph X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 08 Nov 2008 14:39:56 -0000 Attilio Rao wrote: > 2008/11/8, Alexander Motin : >> @@ -262,8 +264,14 @@ ngt_rcvmsg(node_p node, item_p item, hoo >> case NGM_TTY_SET_TTY: >> if (sc->tp != NULL) >> return (EBUSY); >> - error = ttyhook_register(&sc->tp, td, *(int *)msg->data, >> + >> + p = pfind(((int *)msg->data)[0]); >> + if (p == NULL) >> + return (ESRCH); >> + td = FIRST_THREAD_IN_PROC(p); >> + error = ttyhook_register(&sc->tp, td, ((int *)msg->data)[1], >> &ngt_hook, sc); >> + PROC_UNLOCK(p); >> if (error != 0) >> return (error); >> break; > > The threads iterator in strcut proc should be proc_slock protected, so > you need to grab/release it around FIRST_THREAD_IN_PROC(). thread_find() also asserts process locked, but then it traverses/dereferences/returns threads without any additional locking. -- Alexander Motin