On Wed, Jun 19, 2019 at 1:02 PM Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> wrote: > > Hi. > > > On Wed, Jun 19, 2019 at 12:23 PM Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> 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. > > > 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 > > 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. -- Best Regards Masahiro Yamada