On Sat, 27 Apr 2019 12:48:25 +0200, Alban Crequy wrote: > On Fri, Apr 26, 2019 at 11:03 PM Jakub Kicinski > <jakub.kicinski@xxxxxxxxxxxxx> wrote: > > > > On Fri, 26 Apr 2019 17:48:45 +0200, Alban Crequy wrote: > > > In the unlikely case where network namespaces are not compiled in > > > (CONFIG_NET_NS=n), the verifier will not allow access to ->netns_*. > > > > Naive question - why return an error? init_net should always be there, > > no? > > True for netns_dev. However, without CONFIG_NET_NS, we cannot access netns_ino: > > (struct sock_common).possible_net_t.(struct net *): > > typedef struct { > #ifdef CONFIG_NET_NS > struct net *net; > #endif > } possible_net_t; > > And I don't think it would make much sense to allow access to > netns_dev but not netns_ino. Right, if CONFIG_NET_NS=n we could just take the pointer to init_net directly, and not worry about the field. IMHO it'd be preferable to changing the UAPI based on kernel config, but I don't feel super strongly.