Subject: linux-next: build failure after merge of the vfs-brauner tree

From: Stephen Rothwell <[email-masked]>
Date: Mon, 17 Mar 2025 23:56:11 +1100

Hi all,

After merging the vfs-brauner tree, today's linux-next build (sparc64
defconfig) failed like this:

In file included from <command-line>:
fs/pidfs.c: In function 'pidfs_alloc_file':
include/linux/compiler_types.h:557:45: error: call to '__compiletime_assert_399' declared with attribute error: BUILD_BUG_ON failed: O_DSYNC != CLONE_PIDFD
  557 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
      |                                             ^
include/linux/compiler_types.h:538:25: note: in definition of macro '__compiletime_assert'
  538 |                         prefix ## suffix();                             \
      |                         ^~~~~~
include/linux/compiler_types.h:557:9: note: in expansion of macro '_compiletime_assert'
  557 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
      |         ^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
   39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
      |                                     ^~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:50:9: note: in expansion of macro 'BUILD_BUG_ON_MSG'
   50 |         BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
      |         ^~~~~~~~~~~~~~~~
fs/pidfs.c:877:9: note: in expansion of macro 'BUILD_BUG_ON'
  877 |         BUILD_BUG_ON(O_DSYNC != CLONE_PIDFD);
      |         ^~~~~~~~~~~~

Caused by commit

  b0f4119d8b2a ("pidfs: ensure that PIDFS_INFO_EXIT is available")

Why would you expect O_DSYNC == CLONE_PIDFD everywhere?

$ git grep 'define\s*O_DSYNC'
arch/alpha/include/uapi/asm/fcntl.h:#define O_DSYNC             040000  /* used to be O_SYNC, see below */
arch/mips/include/uapi/asm/fcntl.h:#define O_DSYNC              0x0010  /* used to be O_SYNC, see below */
arch/parisc/include/uapi/asm/fcntl.h:#define O_DSYNC            001000000
arch/sparc/include/uapi/asm/fcntl.h:#define O_DSYNC             0x2000  /* used to be O_SYNC, see below */
include/uapi/asm-generic/fcntl.h:#define O_DSYNC                00010000        /* used to be O_SYNC, see below */

$ git grep -w 'define\s*CLONE_PIDFD'
include/uapi/linux/sched.h:#define CLONE_PIDFD  0x00001000      /* set if a pidfd should be placed in parent */
samples/pidfd/pidfd-metadata.c:#define CLONE_PIDFD 0x00001000
tools/perf/trace/beauty/include/uapi/linux/sched.h:#define CLONE_PIDFD  0x00001000      /* set if a pidfd should be placed in parent */
tools/testing/selftests/pidfd/pidfd.h:#define CLONE_PIDFD 0x00001000

I have reverted that commit for today.

-- 
Cheers,
Stephen Rothwell