Greetings! As the guilty party in authoring this, and also pretty new around here I’m wondering what I need to do to help clean it up? > On 19 Jun 2019, at 05:14, Masahiro Yamada wrote: > > On Wed, Jun 19, 2019 at 1:02 PM Masahiro Yamada > wrote: >> >> Hi. >> >> >> On Wed, Jun 19, 2019 at 12:23 PM Stephen Rothwell wrote: >>> >>> Hi all, >>> >>> After merging the net-next tree, today's linux-next build (x86_64 >>> allmodconfig) failed like this: >>> >>> In file included from usr/include/linux/tc_act/tc_ctinfo.hdrtest.c:1: >>> ./usr/include/linux/tc_act/tc_ctinfo.h:30:21: error: implicit declaration of function 'BIT' [-Werror=implicit-function-declaration] >>> CTINFO_MODE_DSCP = BIT(0), >>> ^~~ >>> ./usr/include/linux/tc_act/tc_ctinfo.h:30:2: error: enumerator value for 'CTINFO_MODE_DSCP' is not an integer constant >>> CTINFO_MODE_DSCP = BIT(0), >>> ^~~~~~~~~~~~~~~~ >>> ./usr/include/linux/tc_act/tc_ctinfo.h:32:1: error: enumerator value for 'CTINFO_MODE_CPMARK' is not an integer constant >>> }; >>> ^ >>> >>> Caused by commit >>> >>> 24ec483cec98 ("net: sched: Introduce act_ctinfo action") >>> >>> Presumably exposed by commit >>> >>> b91976b7c0e3 ("kbuild: compile-test UAPI headers to ensure they are self-contained") >>> >>> from the kbuild tree. Stephen, thanks for the fixup - is that now in the tree or do I need to submit a fix via the normal net-next channel so it gets picked up by the iproute2 people who maintain a local copy of the uapi includes? >> >> >> My commit correctly blocked the broken UAPI header, Hooray! >> >> People export more and more headers that >> are never able to compile in user-space. >> >> We must block new breakages from coming in. >> >> >> BIT() is not exported to user-space >> since it is not prefixed with underscore. >> >> >> You can use _BITUL() in user-space, >> which is available in include/uapi/linux/const.h Thanks for the pointers. I am confused as to why I didn’t hit this issue when I built & run tested locally off the net-next tree. >> >> > > > I just took a look at > include/uapi/linux/tc_act/tc_ctinfo.h > > > I just wondered why the following can be compiled: > > struct tc_ctinfo { > tc_gen; > }; > > > Then, I found 'tc_gen' is a macro. > > #define tc_gen \ > __u32 index; \ > __u32 capab; \ > int action; \ > int refcnt; \ > int bindcnt > > > > What a hell. This is what other actions do e.g. tc_skbedit. Can you advise what I should do instead? > -- > Best Regards > Masahiro Yamada Many thanks to all for your valuable time & advice. Cheers, Kevin D-B gpg: 012C ACB2 28C6 C53E 9775 9123 B3A2 389B 9DE2 334A