Received: by 10.223.176.5 with SMTP id f5csp181853wra; Tue, 30 Jan 2018 09:51:01 -0800 (PST) X-Google-Smtp-Source: AH8x227eu8IZZ1RLN1QnhfPBElhC85LkLtAPef9EVTnYheF7VfRB4dC5gvDHd3myGCZUdUHU0bUj X-Received: by 2002:a17:902:1a4:: with SMTP id b33-v6mr25623676plb.58.1517334661748; Tue, 30 Jan 2018 09:51:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517334661; cv=none; d=google.com; s=arc-20160816; b=OOdjNNyL0zmFlSa6juJ4YfPz39A0191y+A6y2L1UAEcfhv6gbJvoMFT5DyjXz6/Y8l qI9DyfM2T+v26g5IsdZ/IraMcx3GcluvrUTIqQ1fn3Hpg/jc8nQ8CVqX0gffs2h7Bz3+ Wy907+w2rHbAWjOfSuosqxDCsl/1zTr3BHOv92arQv7kiXIaKUv/YeAtr3P8hj/FD2t/ u+3zYoebNxepkS8Pf7YO/XO1rTdwcsF09sn29I/z0D/x7UD+s8DHen3xTLzHn7AEZSoP qVJrz4NERLn7USI1sMixFn8Px09JejeF4OQ1kShHB36r4pN23vA451CDycqg0UmGOPeN AKvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=Qrab3QF4BWVk15Ly6C+UJpHdamjtUtb+EXKvwB2O3SY=; b=KC0EGen4Xn/i3ICYm9RgnfRAPQhzyFdVQilnhopDj9BVxfZO+59+dTt8z2c76zaGWp xIqjHqPapnhMGwf73YEszCz6v5iFnbWDmHhberhsNaTX69e+Ab7PKFgzEb3PEsgdKyaC ZHRG3MYidMUyrE+yhmlIp3X568egvAV5+AtNeb+FaUBxlCFZwRKZ451pDaLHA6E7VXq3 EK+96S09KaftR5caggA/sfPIJg7Fxa5adaFzZ2y1+YZqb6ePoiyKP3WYGrIppsAhQnWB JVzTuFUfl0R/czEa5N9rvovwHbZvriYqtAJIS0V1s4wFMlcw4gwMcSTUGHoDWI25QX9l LhOQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w2si1885385pgq.415.2018.01.30.09.50.47; Tue, 30 Jan 2018 09:51:01 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752754AbeA3Q0U (ORCPT + 99 others); Tue, 30 Jan 2018 11:26:20 -0500 Received: from youngberry.canonical.com ([91.189.89.112]:53252 "EHLO youngberry.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751651AbeA3Q0T (ORCPT ); Tue, 30 Jan 2018 11:26:19 -0500 Received: from mail-wr0-f200.google.com ([209.85.128.200]) by youngberry.canonical.com with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.76) (envelope-from ) id 1egYji-00060k-1Q for linux-kernel@vger.kernel.org; Tue, 30 Jan 2018 16:26:18 +0000 Received: by mail-wr0-f200.google.com with SMTP id f6so8581007wre.4 for ; Tue, 30 Jan 2018 08:26:18 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=Qrab3QF4BWVk15Ly6C+UJpHdamjtUtb+EXKvwB2O3SY=; b=a2dPuULfB5KvaDPhOhZN88vFPUmG+ElfOHJj2DAAhWP/tAXhauaS5YVGAd9YGi8N9T 0BLdRPZt9vK2TbSkj0glKH8/83RbsgCbz2UKoAL6ktBBym7fisxEwUO6Zx6dj7m150/a sMxvu7nEiDAFlLV4VbbHIAyhmuf8AMRAcCoNr3/tmMCKF4BayYpHan9a7D0PGtj3ZzVG x0Iy3LtlyqmYCYE7dpu4el6YixewFFXT20IhwyXRWtBBSNB4CLQpmRpssDYgupAZnX5o 9lFoRIZ1JafQZ+dR6xdnqcWTMk7La44LS+RTtdt/uaDdHx68NSIa153Q0X2QuO6fVZLh pR/w== X-Gm-Message-State: AKwxytfNSj3nVciAsVzSaNCgHYcZYMBqkINamttmJCqSZa1ibcYC5JND 1svVVpxeduyMugrk8P+G8Fkr/Zk/5EGcZufQ8pZNjsy8kZHtjAKKRawQsT8D26Qw3eFmPCLcy1Q yN7l7l8xFa1nQ4H8uUfk2kkc09vLbhAm5GmPIQ4b3Aw== X-Received: by 10.80.158.169 with SMTP id a38mr52632080edf.72.1517329577690; Tue, 30 Jan 2018 08:26:17 -0800 (PST) X-Received: by 10.80.158.169 with SMTP id a38mr52632060edf.72.1517329577412; Tue, 30 Jan 2018 08:26:17 -0800 (PST) Received: from gmail.com (84-199-88-155.iFiber.telenet-ops.be. [84.199.88.155]) by smtp.gmail.com with ESMTPSA id z11sm6551233edh.94.2018.01.30.08.26.16 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 30 Jan 2018 08:26:16 -0800 (PST) Date: Tue, 30 Jan 2018 17:26:15 +0100 From: Christian Brauner To: kbuild test robot Cc: Christian Brauner , kbuild-all@01.org, netdev@vger.kernel.org, ebiederm@xmission.com, dsahern@gmail.com, fw@strlen.de, daniel@iogearbox.net, lucien.xin@gmail.com, mschiffer@universe-factory.net, jakub.kicinski@netronome.com, vyasevich@gmail.com, linux-kernel@vger.kernel.org, jbenc@redhat.com, w.bumiller@proxmox.com, nicolas.dichtel@6wind.com Subject: Re: [PATCH net-next 1/1] rtnetlink: enable IFLA_IF_NETNSID for RTM_NEWLINK Message-ID: <20180130162614.hosa3av7o2issdcq@gmail.com> References: <20180129170720.29724-2-christian.brauner@ubuntu.com> <201801310038.YTg1vb4V%fengguang.wu@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <201801310038.YTg1vb4V%fengguang.wu@intel.com> User-Agent: NeoMutt/20170609 (1.8.3) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jan 31, 2018 at 12:13:11AM +0800, kbuild test robot wrote: > Hi Christian, > > Thank you for the patch! Yet something to improve: > > [auto build test ERROR on net-next/master] > > url: https://github.com/0day-ci/linux/commits/Christian-Brauner/rtnetlink-enable-IFLA_IF_NETNSID-for-RTM_NEWLINK/20180130-230918 > config: i386-randconfig-a1-201804 (attached as .config) > compiler: gcc-4.9 (Debian 4.9.4-2) 4.9.4 > reproduce: > # save the attached .config to linux build tree > make ARCH=i386 > > All errors (new ones prefixed by >>): > > net/core/rtnetlink.c: In function 'rtnl_newlink': > >> net/core/rtnetlink.c:2903:3: error: implicit declaration of function 'rtnl_link_get_net_capable' [-Werror=implicit-function-declaration] > dest_net = rtnl_link_get_net_capable(skb, net, tb, CAP_NET_ADMIN); > ^ The patch is against Dave's net-next tree which already contains a merged prior patch series from me which introduces the missing function. So I'd say this is safe to ignore. Thanks! Christian > net/core/rtnetlink.c:2903:12: warning: assignment makes pointer from integer without a cast > dest_net = rtnl_link_get_net_capable(skb, net, tb, CAP_NET_ADMIN); > ^ > cc1: some warnings being treated as errors > > vim +/rtnl_link_get_net_capable +2903 net/core/rtnetlink.c > > 2729 > 2730 static int rtnl_newlink(struct sk_buff *skb, struct nlmsghdr *nlh, > 2731 struct netlink_ext_ack *extack) > 2732 { > 2733 struct net *net = sock_net(skb->sk); > 2734 const struct rtnl_link_ops *ops; > 2735 const struct rtnl_link_ops *m_ops = NULL; > 2736 struct net_device *dev; > 2737 struct net_device *master_dev = NULL; > 2738 struct ifinfomsg *ifm; > 2739 char kind[MODULE_NAME_LEN]; > 2740 char ifname[IFNAMSIZ]; > 2741 struct nlattr *tb[IFLA_MAX+1]; > 2742 struct nlattr *linkinfo[IFLA_INFO_MAX+1]; > 2743 unsigned char name_assign_type = NET_NAME_USER; > 2744 int err; > 2745 > 2746 #ifdef CONFIG_MODULES > 2747 replay: > 2748 #endif > 2749 err = nlmsg_parse(nlh, sizeof(*ifm), tb, IFLA_MAX, ifla_policy, extack); > 2750 if (err < 0) > 2751 return err; > 2752 > 2753 if (tb[IFLA_IF_NETNSID]) > 2754 return -EOPNOTSUPP; > 2755 > 2756 if (tb[IFLA_IFNAME]) > 2757 nla_strlcpy(ifname, tb[IFLA_IFNAME], IFNAMSIZ); > 2758 else > 2759 ifname[0] = '\0'; > 2760 > 2761 ifm = nlmsg_data(nlh); > 2762 if (ifm->ifi_index > 0) > 2763 dev = __dev_get_by_index(net, ifm->ifi_index); > 2764 else { > 2765 if (ifname[0]) > 2766 dev = __dev_get_by_name(net, ifname); > 2767 else > 2768 dev = NULL; > 2769 } > 2770 > 2771 if (dev) { > 2772 master_dev = netdev_master_upper_dev_get(dev); > 2773 if (master_dev) > 2774 m_ops = master_dev->rtnl_link_ops; > 2775 } > 2776 > 2777 err = validate_linkmsg(dev, tb); > 2778 if (err < 0) > 2779 return err; > 2780 > 2781 if (tb[IFLA_LINKINFO]) { > 2782 err = nla_parse_nested(linkinfo, IFLA_INFO_MAX, > 2783 tb[IFLA_LINKINFO], ifla_info_policy, > 2784 NULL); > 2785 if (err < 0) > 2786 return err; > 2787 } else > 2788 memset(linkinfo, 0, sizeof(linkinfo)); > 2789 > 2790 if (linkinfo[IFLA_INFO_KIND]) { > 2791 nla_strlcpy(kind, linkinfo[IFLA_INFO_KIND], sizeof(kind)); > 2792 ops = rtnl_link_ops_get(kind); > 2793 } else { > 2794 kind[0] = '\0'; > 2795 ops = NULL; > 2796 } > 2797 > 2798 if (1) { > 2799 struct nlattr *attr[ops ? ops->maxtype + 1 : 1]; > 2800 struct nlattr *slave_attr[m_ops ? m_ops->slave_maxtype + 1 : 1]; > 2801 struct nlattr **data = NULL; > 2802 struct nlattr **slave_data = NULL; > 2803 struct net *dest_net, *link_net = NULL; > 2804 > 2805 if (ops) { > 2806 if (ops->maxtype && linkinfo[IFLA_INFO_DATA]) { > 2807 err = nla_parse_nested(attr, ops->maxtype, > 2808 linkinfo[IFLA_INFO_DATA], > 2809 ops->policy, NULL); > 2810 if (err < 0) > 2811 return err; > 2812 data = attr; > 2813 } > 2814 if (ops->validate) { > 2815 err = ops->validate(tb, data, extack); > 2816 if (err < 0) > 2817 return err; > 2818 } > 2819 } > 2820 > 2821 if (m_ops) { > 2822 if (m_ops->slave_maxtype && > 2823 linkinfo[IFLA_INFO_SLAVE_DATA]) { > 2824 err = nla_parse_nested(slave_attr, > 2825 m_ops->slave_maxtype, > 2826 linkinfo[IFLA_INFO_SLAVE_DATA], > 2827 m_ops->slave_policy, > 2828 NULL); > 2829 if (err < 0) > 2830 return err; > 2831 slave_data = slave_attr; > 2832 } > 2833 } > 2834 > 2835 if (dev) { > 2836 int status = 0; > 2837 > 2838 if (nlh->nlmsg_flags & NLM_F_EXCL) > 2839 return -EEXIST; > 2840 if (nlh->nlmsg_flags & NLM_F_REPLACE) > 2841 return -EOPNOTSUPP; > 2842 > 2843 if (linkinfo[IFLA_INFO_DATA]) { > 2844 if (!ops || ops != dev->rtnl_link_ops || > 2845 !ops->changelink) > 2846 return -EOPNOTSUPP; > 2847 > 2848 err = ops->changelink(dev, tb, data, extack); > 2849 if (err < 0) > 2850 return err; > 2851 status |= DO_SETLINK_NOTIFY; > 2852 } > 2853 > 2854 if (linkinfo[IFLA_INFO_SLAVE_DATA]) { > 2855 if (!m_ops || !m_ops->slave_changelink) > 2856 return -EOPNOTSUPP; > 2857 > 2858 err = m_ops->slave_changelink(master_dev, dev, > 2859 tb, slave_data, > 2860 extack); > 2861 if (err < 0) > 2862 return err; > 2863 status |= DO_SETLINK_NOTIFY; > 2864 } > 2865 > 2866 return do_setlink(skb, dev, ifm, extack, tb, ifname, > 2867 status); > 2868 } > 2869 > 2870 if (!(nlh->nlmsg_flags & NLM_F_CREATE)) { > 2871 if (ifm->ifi_index == 0 && tb[IFLA_GROUP]) > 2872 return rtnl_group_changelink(skb, net, > 2873 nla_get_u32(tb[IFLA_GROUP]), > 2874 ifm, extack, tb); > 2875 return -ENODEV; > 2876 } > 2877 > 2878 if (tb[IFLA_MAP] || tb[IFLA_PROTINFO]) > 2879 return -EOPNOTSUPP; > 2880 > 2881 if (!ops) { > 2882 #ifdef CONFIG_MODULES > 2883 if (kind[0]) { > 2884 __rtnl_unlock(); > 2885 request_module("rtnl-link-%s", kind); > 2886 rtnl_lock(); > 2887 ops = rtnl_link_ops_get(kind); > 2888 if (ops) > 2889 goto replay; > 2890 } > 2891 #endif > 2892 return -EOPNOTSUPP; > 2893 } > 2894 > 2895 if (!ops->setup) > 2896 return -EOPNOTSUPP; > 2897 > 2898 if (!ifname[0]) { > 2899 snprintf(ifname, IFNAMSIZ, "%s%%d", ops->kind); > 2900 name_assign_type = NET_NAME_ENUM; > 2901 } > 2902 > > 2903 dest_net = rtnl_link_get_net_capable(skb, net, tb, CAP_NET_ADMIN); > 2904 if (IS_ERR(dest_net)) > 2905 return PTR_ERR(dest_net); > 2906 > 2907 if (tb[IFLA_LINK_NETNSID]) { > 2908 int id = nla_get_s32(tb[IFLA_LINK_NETNSID]); > 2909 > 2910 link_net = get_net_ns_by_id(dest_net, id); > 2911 if (!link_net) { > 2912 err = -EINVAL; > 2913 goto out; > 2914 } > 2915 err = -EPERM; > 2916 if (!netlink_ns_capable(skb, link_net->user_ns, CAP_NET_ADMIN)) > 2917 goto out; > 2918 } > 2919 > 2920 dev = rtnl_create_link(link_net ? : dest_net, ifname, > 2921 name_assign_type, ops, tb); > 2922 if (IS_ERR(dev)) { > 2923 err = PTR_ERR(dev); > 2924 goto out; > 2925 } > 2926 > 2927 dev->ifindex = ifm->ifi_index; > 2928 > 2929 if (ops->newlink) { > 2930 err = ops->newlink(link_net ? : net, dev, tb, data, > 2931 extack); > 2932 /* Drivers should call free_netdev() in ->destructor > 2933 * and unregister it on failure after registration > 2934 * so that device could be finally freed in rtnl_unlock. > 2935 */ > 2936 if (err < 0) { > 2937 /* If device is not registered at all, free it now */ > 2938 if (dev->reg_state == NETREG_UNINITIALIZED) > 2939 free_netdev(dev); > 2940 goto out; > 2941 } > 2942 } else { > 2943 err = register_netdevice(dev); > 2944 if (err < 0) { > 2945 free_netdev(dev); > 2946 goto out; > 2947 } > 2948 } > 2949 err = rtnl_configure_link(dev, ifm); > 2950 if (err < 0) > 2951 goto out_unregister; > 2952 if (link_net) { > 2953 err = dev_change_net_namespace(dev, dest_net, ifname); > 2954 if (err < 0) > 2955 goto out_unregister; > 2956 } > 2957 if (tb[IFLA_MASTER]) { > 2958 err = do_set_master(dev, nla_get_u32(tb[IFLA_MASTER]), > 2959 extack); > 2960 if (err) > 2961 goto out_unregister; > 2962 } > 2963 out: > 2964 if (link_net) > 2965 put_net(link_net); > 2966 put_net(dest_net); > 2967 return err; > 2968 out_unregister: > 2969 if (ops->newlink) { > 2970 LIST_HEAD(list_kill); > 2971 > 2972 ops->dellink(dev, &list_kill); > 2973 unregister_netdevice_many(&list_kill); > 2974 } else { > 2975 unregister_netdevice(dev); > 2976 } > 2977 goto out; > 2978 } > 2979 } > 2980 > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > https://lists.01.org/pipermail/kbuild-all Intel Corporation