From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 88351 invoked by alias); 21 May 2015 14:56:45 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 88339 invoked by uid 89); 21 May 2015 14:56:45 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.4 required=5.0 tests=AWL,BAYES_00,KAM_LAZY_DOMAIN_SECURITY,SPF_HELO_PASS,T_RP_MATCHES_RCVD autolearn=no version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Thu, 21 May 2015 14:56:44 +0000 Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id t4LEudGM008452 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Thu, 21 May 2015 10:56:39 -0400 Received: from [127.0.0.1] (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t4LEubRk000815; Thu, 21 May 2015 10:56:37 -0400 Message-ID: <555DF224.8020101@redhat.com> Date: Thu, 21 May 2015 14:56:00 -0000 From: Pedro Alves User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 MIME-Version: 1.0 To: Gary Benson , gdb-patches@sourceware.org CC: Eli Zaretskii , Doug Evans , =?windows-1252?Q?Iago_L=F3pez_Galeiras?= Subject: Re: [PATCH 2/9 v2] Introduce nat/linux-namespaces.[ch] References: <1429186791-6867-1-git-send-email-gbenson@redhat.com> <1430395542-16017-3-git-send-email-gbenson@redhat.com> In-Reply-To: <1430395542-16017-3-git-send-email-gbenson@redhat.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-SW-Source: 2015-05/txt/msg00538.txt.bz2 On 04/30/2015 01:05 PM, Gary Benson wrote: ... > + For avoidance of doubt, if the helper process receives a > + message it doesn't handle it will reply with MNSH_MSG_ERROR. > + If the main process receives MNSH_MSG_ERROR at any time then > + it will call internal_error. If internal_error causes the > + main process to exit, the helper will notice this and also > + exit. The helper will not exit until the main process > + terminates, so if the user continues through internal_error > + the helper will still be there awaiting requests from the > + main process. ... > +/* Mount namespace helper message types. */ > + > +enum mnsh_msg_type > + { > + /* An unrecoverable communication error occurred. I think "unrecoverable" here sounds a bit confusing, as it contradicts the comment above that explains that the helper is still awaiting requests if the user decides to continue after internal_error. > + Receipt of this message by either end will cause > + an assertion failure in the main process. */ > + MNSH_MSG_ERROR, > + /* A request that the helper call unlink. The single > + argument (the filename) should be passed in BUF, and > + should include a terminating NUL character. Helper > + should respond with a MNSH_RET_INT. */ > + MNSH_REQ_UNLINK, > + > + /* A request that the helper call readlink. The single > + argument (the filename) should be passed in BUF, and > + should include a terminating NUL character. The helper Missing double-space. > +static void > +mnsh_main (int sock) > +{ > + while (1) > + { > + enum mnsh_msg_type type; > + int fd, int1, int2; > + char buf[PATH_MAX]; > + ssize_t size, response = -1; > + > + size = mnsh_recv_message (sock, &type, > + &fd, &int1, &int2, > + buf, sizeof (buf)); > + > + if (size >= 0 && size < sizeof (buf)) > + { > + switch (type) > + { > + case MNSH_REQ_SETNS: > + if (fd > 0) > + response = mnsh_handle_setns (sock, fd, int1); > + break; > + > + case MNSH_REQ_OPEN: > + if (buf[size - 1] == '\0') Why these == '\0' checks? To protect against bugs? In that case, I guess this should be: if (size > 0 && buf[size - 1] == '\0') > + response = mnsh_handle_open (sock, buf, int1, int2); > + break; And that's it. Really all looks good to me. :-) Thanks, Pedro Alves