[PATCH] common: avoid conflict with __bitwise and __force from linux/types.h

Beniamino Galvani bgalvani at redhat.com
Mon Sep 18 09:47:01 PDT 2017


On Fri, Sep 15, 2017 at 05:07:31PM +0200, Johannes Berg wrote:
> On Fri, 2017-09-15 at 17:05 +0200, Beniamino Galvani wrote:
> > On Fri, Sep 15, 2017 at 03:34:40PM +0200, Johannes Berg wrote:
> > > On Fri, 2017-09-15 at 14:37 +0200, Beniamino Galvani wrote:
> > > > Namespace the __bitwise and __force macros so that they don't
> > > > conflict
> > > > with the ones from linux/types.h:
> > > > 
> > > >   In file included from ../src/l2_packet/l2_packet_linux.c:15:0:
> > > >   hostap/src/utils/common.h:438:0: warning: "__bitwise" redefined
> > > >    #define __bitwise
> > > > 
> > > >   In file included from /usr/include/linux/filter.h:9:0,
> > > >                    from ../src/l2_packet/l2_packet_linux.c:13:
> > > >   /usr/include/linux/types.h:21:0: note: this is the location of
> > > > the
> > > > previous definition
> > > >    #define __bitwise __bitwise__
> > > 
> > > I think we can just #ifdef them because it's a compatible, if not
> > > exactly identical, definition?
> > 
> > Yes, it's compatible. However, I think there could still be conflicts
> > adding an #ifdef because in the kernel header those macros are not
> > guarded and so it could happen that a file includes "common.h" and
> > then includes another local header file that uses <linux/types.h>,
> > causing a redefinition warning.
> 
> I guess I'd say you should include it the right way around - after all,
> there's already precedent for this (check the git history of these
> definitions)

Okay then. Maybe we can just:

 #ifdef __CHECKER__
 #define __force __attribute__((force))
 #undef __bitwise
 #define __bitwise __attribute__((bitwise))
 #else
 #define __force
+#undef __bitwise
 #define __bitwise
 #endif

as in the __CHECKER__ case?

'__force' is not actually defined in uapi headers and doesn't require
this workaround.

Beniamino



More information about the Hostap mailing list