On Thu, Jul 06, 2017 at 04:03:30PM +0100, Al Viro wrote: > #define __SC_CAST(t, a) (__force t) a > > in syscalls.h Hmm. > > > index a2d4a8ac94ca..a04adbc70ddf 100644 > > --- a/include/uapi/linux/aio_abi.h > > +++ b/include/uapi/linux/aio_abi.h > > @@ -28,6 +28,7 @@ > > #define __LINUX__AIO_ABI_H > > > > #include <linux/types.h> > > +#include <linux/fs.h> > > Um... Includes of non-uapi in uapi are wrong. What do you need > fs.h for, anyway? Just put the typedef into uapi/linux/types.h > and be done with that... We automatically get the non-uapi one for userspace. And we do in fact need to write it that way as it will not show up as uapi/ in userspace. But yes, the type could be taken to types.h > > > +#define BLK_STS_OK 0 > > +#define BLK_STS_NOTSUPP ((__force blk_status_t)1) > > +#define BLK_STS_TIMEOUT ((__force blk_status_t)2) > > +#define BLK_STS_NOSPC ((__force blk_status_t)3) > > +#define BLK_STS_TRANSPORT ((__force blk_status_t)4) > > +#define BLK_STS_TARGET ((__force blk_status_t)5) > > +#define BLK_STS_NEXUS ((__force blk_status_t)6) > > WTF is that doing here? If nothing else, it's a userland namespace > pollution; typedefs with such names are OK in the kernel, but not > is something that might be included from userland. And that chunk > doesn't seem to have anything to do with the rest of the patch... It doesn't that was the copy and paste of the __bitwise boilerplate I staeted with..