From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,URIBL_SBL,URIBL_SBL_A autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8581CC7618B for ; Mon, 29 Jul 2019 17:52:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 5A4A7206BA for ; Mon, 29 Jul 2019 17:52:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727959AbfG2RwR (ORCPT ); Mon, 29 Jul 2019 13:52:17 -0400 Received: from shards.monkeyblade.net ([23.128.96.9]:36684 "EHLO shards.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726631AbfG2RwR (ORCPT ); Mon, 29 Jul 2019 13:52:17 -0400 Received: from localhost (unknown [IPv6:2601:601:9f80:35cd::d71]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) (Authenticated sender: davem-davemloft) by shards.monkeyblade.net (Postfix) with ESMTPSA id AB62A14017DA8; Mon, 29 Jul 2019 10:52:16 -0700 (PDT) Date: Mon, 29 Jul 2019 10:52:16 -0700 (PDT) Message-Id: <20190729.105216.2073541569967891866.davem@davemloft.net> To: jiri@resnulli.us Cc: netdev@vger.kernel.org, jakub.kicinski@netronome.com, sthemmin@microsoft.com, dsahern@gmail.com, mlxsw@mellanox.com Subject: Re: [patch net-next 1/3] net: devlink: allow to change namespaces From: David Miller In-Reply-To: <20190727094459.26345-2-jiri@resnulli.us> References: <20190727094459.26345-1-jiri@resnulli.us> <20190727094459.26345-2-jiri@resnulli.us> X-Mailer: Mew version 6.8 on Emacs 26.1 Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.5.12 (shards.monkeyblade.net [149.20.54.216]); Mon, 29 Jul 2019 10:52:16 -0700 (PDT) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jiri Pirko Date: Sat, 27 Jul 2019 11:44:57 +0200 > + if ((netns_pid_attr && (netns_fd_attr || netns_id_attr)) || > + (netns_fd_attr && (netns_pid_attr || netns_id_attr)) || > + (netns_id_attr && (netns_pid_attr || netns_fd_attr))) { > + NL_SET_ERR_MSG(info->extack, "multiple netns identifying attributes specified"); > + return ERR_PTR(-EINVAL); > + } How about: if (!!a + !!b + !!c > 1) { ... > + > + if (netns_pid_attr) { > + net = get_net_ns_by_pid(nla_get_u32(netns_pid_attr)); > + } else if (netns_fd_attr) { > + net = get_net_ns_by_fd(nla_get_u32(netns_fd_attr)); > + } else if (netns_id_attr) { > + net = get_net_ns_by_id(sock_net(skb->sk), > + nla_get_u32(netns_id_attr)); > + if (!net) > + net = ERR_PTR(-EINVAL); > + } > + if (IS_ERR(net)) { I think this is going to be one of those cases where a compiler won't be able to prove that 'net' is guaranteed to be initialized at this spot. Please rearrange this code somehow so that is unlikely to happen. Thanks.