From owner-svn-src-all@FreeBSD.ORG Wed May 28 15:41:35 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 22A1E8A1; Wed, 28 May 2014 15:41:35 +0000 (UTC) Received: from vps1.elischer.org (vps1.elischer.org [204.109.63.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "vps1.elischer.org", Issuer "CA Cert Signing Authority" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id CF4C32422; Wed, 28 May 2014 15:41:34 +0000 (UTC) Received: from jre-mbp.elischer.org (ppp121-45-232-70.lns20.per1.internode.on.net [121.45.232.70]) (authenticated bits=0) by vps1.elischer.org (8.14.8/8.14.8) with ESMTP id s4SFfS85091647 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Wed, 28 May 2014 08:41:31 -0700 (PDT) (envelope-from julian@freebsd.org) Message-ID: <538603A3.7080303@freebsd.org> Date: Wed, 28 May 2014 23:41:23 +0800 From: Julian Elischer User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.5.0 MIME-Version: 1.0 To: Gleb Smirnoff Subject: Re: svn commit: r266806 - head/sys/netgraph References: <201405281315.s4SDFEvc061176@svn.freebsd.org> <5385EED0.1010506@freebsd.org> <20140528145619.GM50679@FreeBSD.org> In-Reply-To: <20140528145619.GM50679@FreeBSD.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, dmitryluhtionov@gmail.com X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18 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: Wed, 28 May 2014 15:41:35 -0000 On 5/28/14, 10:56 PM, Gleb Smirnoff wrote: > On Wed, May 28, 2014 at 10:12:32PM +0800, Julian Elischer wrote: > J> On 5/28/14, 9:15 PM, Gleb Smirnoff wrote: > J> > Author: glebius > J> > Date: Wed May 28 13:15:14 2014 > J> > New Revision: 266806 > J> > URL: http://svnweb.freebsd.org/changeset/base/266806 > J> > > J> > Log: > J> > Use M_WAITOK for the NGM_PIPE_SET_CFG control message. We expect it to > J> > arrive from userland only. > J> > > J> > Submitted by: Dmitry Luhtionov > J> what's to stop another node from generating it and sending it on? > J> generally a message may come from anywhere. > J> Just becasue YOU don't have module that > J> sends messages to ng_pipe, doesn't mean there never will be.. > J> also there are cases when the locking may force a message to be > J> delivered asynchronously. > > I know that. After resolving many issues with netgraph, I feel that > our policy should be towards putting some invariants on what events > SHOULD come from userland only and which events SHOULD be serviced > without memory failures. > > Current paradigma that messages are fully symmetrical and can come > from anywhere are quite a curious thought experiment. I liked that > for a long time. But in practice if we want to build a robust software > we should make more strict rules of using it. > > You could disagree, but if you try to fix this particular one liner > in the paradigma of "messages come from anywhere", then you will end > up with smth like 20 lines of code to this particular module. Next > comes the need to fix any software or script that sends NGM_PIPE_SET_CFG, > it now should be taught of dealing with ENOMEM. So, instead of one > liner you will bury yourself under tons of work. > > Then I suggest that we increment the protocol, and add support to messages to say whether they come from user space. and some providers only accept such messages. I have lost track of the code so I don't know if my comment about messages getting queued instead of delivered is still true. However if it is, then a message could be delivered by a kernel agent even if it is initiated by a userspace program.