From owner-svn-src-all@FreeBSD.ORG Sat Nov 8 13:13:49 2008 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 588961065678; Sat, 8 Nov 2008 13:13:49 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.154]) by mx1.freebsd.org (Postfix) with ESMTP id 5A7918FC0A; Sat, 8 Nov 2008 13:13:47 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: by fg-out-1718.google.com with SMTP id l26so1379370fgb.35 for ; Sat, 08 Nov 2008 05:13:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender :to:subject:cc:in-reply-to:mime-version:content-type :content-transfer-encoding:content-disposition:references :x-google-sender-auth; bh=xDaOPJwPXAhvwxnWf8NTarj/6JuEKR9GzED+sG26W5c=; b=dzGxXEcGlNg1GbQttpt+y27rWnOE29txJGtAreC6Rr8FKQY49f9p5B8PdhFGt0/B1c 1NR6EHaEvutGaIEJ5hH2+1JKiHGKCjkigzKCGELcdnLQX99DjrEbA6rvzyXPnWSqAoN9 UyCLibB1rugE9ykKEOuUEfAqLAiQeA4LrL56A= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version :content-type:content-transfer-encoding:content-disposition :references:x-google-sender-auth; b=FTGMgKY6ZBk6Eb46W5uWXLGX4dwIXkCAbPi+HuLEXPk0m3/aHZd67c713ueGjOknCX 1+FnhwHiNk5vcCi1WuV4lm80oKplLiQUT0t/KRz+0viM7j8QJctBXikOl/d72bORqici 85QflF8uCcEPOIbo4nfUbbtFDA6O+4Q/gi0kI= Received: by 10.86.23.17 with SMTP id 17mr5056510fgw.0.1226150026920; Sat, 08 Nov 2008 05:13:46 -0800 (PST) Received: by 10.86.2.18 with HTTP; Sat, 8 Nov 2008 05:13:46 -0800 (PST) Message-ID: <3bbf2fe10811080513x2b8bd201gcf24562360374494@mail.gmail.com> Date: Sat, 8 Nov 2008 14:13:46 +0100 From: "Attilio Rao" Sender: asmrookie@gmail.com To: "Alexander Motin" In-Reply-To: <200811080625.mA86Pvhw003486@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <200811080625.mA86Pvhw003486@svn.freebsd.org> X-Google-Sender-Auth: a25e4c198f0343e2 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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 08 Nov 2008 13:13:49 -0000 2008/11/8, Alexander Motin : > Author: mav > Date: Sat Nov 8 06:25:57 2008 > New Revision: 184762 > URL: http://svn.freebsd.org/changeset/base/184762 > > Log: > Don't use curthread to resolve file descriptor. Request may be queued, so > thread will be different. Instead require sender to send process ID > together with file descriptor. > > Modified: > head/sys/netgraph/ng_tty.c > > Modified: head/sys/netgraph/ng_tty.c > ============================================================================== > --- head/sys/netgraph/ng_tty.c Sat Nov 8 04:43:24 2008 (r184761) > +++ head/sys/netgraph/ng_tty.c Sat Nov 8 06:25:57 2008 (r184762) > @@ -73,6 +73,7 @@ > #include > #include > #include > +#include > > #include > #include > @@ -250,7 +251,8 @@ ngt_shutdown(node_p node) > static int > ngt_rcvmsg(node_p node, item_p item, hook_p lasthook) > { > - struct thread *td = curthread; /* XXX */ > + struct proc *p; > + struct thread *td; > const sc_p sc = NG_NODE_PRIVATE(node); > struct ng_mesg *msg, *resp = NULL; > int error = 0; > @@ -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(). Thanks, Attilio -- Peace can only be achieved by understanding - A. Einstein