Subject: linux-next: build failure after merge of the nfs-anna tree

From: Mark Brown <[email-masked]>
Date: Thu, 18 Sep 2025 13:35:41 +0100

Hi all,

After merging the nfs-anna tree, today's linux-next build (arm
multi_v7_defconfig) failed like this:

In file included from /tmp/next/build/arch/arm/include/asm/div64.h:114,
                 from /tmp/next/build/include/linux/math.h:6,
                 from /tmp/next/build/include/linux/kernel.h:27,
                 from /tmp/next/build/include/linux/uio.h:8,
                 from /tmp/next/build/include/linux/socket.h:8,
                 from /tmp/next/build/include/uapi/linux/in.h:25,
                 from /tmp/next/build/include/linux/in.h:19,
                 from /tmp/next/build/include/linux/nfs_fs.h:22,
                 from /tmp/next/build/fs/nfs/flexfilelayout/flexfilelayout.c:10:
/tmp/next/build/fs/nfs/flexfilelayout/flexfilelayout.c: In function 'calc_mirror_idx_from_commit':
/tmp/next/build/include/asm-generic/div64.h:183:35: warning: comparison of distinct pointer types lacks a cast [-Wcompare-distinct-pointer-types]
  183 |         (void)(((typeof((n)) *)0) == ((uint64_t *)0));  \
      |                                   ^~
/tmp/next/build/fs/nfs/flexfilelayout/flexfilelayout.c:685:9: note: in expansion of macro 'do_div'
  685 |         do_div(mirror_idx, flseg->mirror_array[0]->dss_count);
      |         ^~~~~~
In file included from /tmp/next/build/include/linux/array_size.h:5,
                 from /tmp/next/build/include/linux/kernel.h:16:
/tmp/next/build/include/asm-generic/div64.h:195:32: warning: right shift count >= width of type [-Wshift-count-overflow]
  195 |         } else if (likely(((n) >> 32) == 0)) {          \
      |                                ^~
/tmp/next/build/include/linux/compiler.h:76:45: note: in definition of macro 'likely'
   76 | # define likely(x)      __builtin_expect(!!(x), 1)
      |                                             ^
/tmp/next/build/fs/nfs/flexfilelayout/flexfilelayout.c:685:9: note: in expansion of macro 'do_div'
  685 |         do_div(mirror_idx, flseg->mirror_array[0]->dss_count);
      |         ^~~~~~
/tmp/next/build/include/asm-generic/div64.h:199:36: error: passing argument 1 of '__div64_32' from incompatible pointer type [-Wincompatible-pointer-types]
  199 |                 __rem = __div64_32(&(n), __base);       \
      |                                    ^~~~
      |                                    |
      |                                    u32 * {aka unsigned int *}
/tmp/next/build/fs/nfs/flexfilelayout/flexfilelayout.c:685:9: note: in expansion of macro 'do_div'
  685 |         do_div(mirror_idx, flseg->mirror_array[0]->dss_count);
      |         ^~~~~~
/tmp/next/build/arch/arm/include/asm/div64.h:24:45: note: expected 'uint64_t *' {aka 'long long unsigned int *'} but argument is of type 'u32 *' {aka 'unsigned int *'}
   24 | static inline uint32_t __div64_32(uint64_t *n, uint32_t base)
      |                                   ~~~~~~~~~~^
/tmp/next/build/fs/nfs/flexfilelayout/flexfilelayout.c: In function 'calc_dss_id_from_commit':
/tmp/next/build/include/asm-generic/div64.h:183:35: warning: comparison of distinct pointer types lacks a cast [-Wcompare-distinct-pointer-types]
  183 |         (void)(((typeof((n)) *)0) == ((uint64_t *)0));  \
      |                                   ^~
/tmp/next/build/fs/nfs/flexfilelayout/flexfilelayout.c:696:16: note: in expansion of macro 'do_div'
  696 |         return do_div(mirror_idx, flseg->mirror_array[0]->dss_count);
      |                ^~~~~~
/tmp/next/build/include/asm-generic/div64.h:195:32: warning: right shift count >= width of type [-Wshift-count-overflow]
  195 |         } else if (likely(((n) >> 32) == 0)) {          \
      |                                ^~
/tmp/next/build/include/linux/compiler.h:76:45: note: in definition of macro 'likely'
   76 | # define likely(x)      __builtin_expect(!!(x), 1)
      |                                             ^
/tmp/next/build/fs/nfs/flexfilelayout/flexfilelayout.c:696:16: note: in expansion of macro 'do_div'
  696 |         return do_div(mirror_idx, flseg->mirror_array[0]->dss_count);
      |                ^~~~~~
/tmp/next/build/include/asm-generic/div64.h:199:36: error: passing argument 1 of '__div64_32' from incompatible pointer type [-Wincompatible-pointer-types]
  199 |                 __rem = __div64_32(&(n), __base);       \
      |                                    ^~~~
      |                                    |
      |                                    u32 * {aka unsigned int *}
/tmp/next/build/fs/nfs/flexfilelayout/flexfilelayout.c:696:16: note: in expansion of macro 'do_div'
  696 |         return do_div(mirror_idx, flseg->mirror_array[0]->dss_count);
      |                ^~~~~~
/tmp/next/build/arch/arm/include/asm/div64.h:24:45: note: expected 'uint64_t *' {aka 'long long unsigned int *'} but argument is of type 'u32 *' {aka 'unsigned int *'}
   24 | static inline uint32_t __div64_32(uint64_t *n, uint32_t base)
      |                                   ~~~~~~~~~~^
make[6]: *** [/tmp/next/build/scripts/Makefile.build:287: fs/nfs/flexfilelayout/flexfilelayout.o] Error 1

Caused by commit

   67ee714244dfb ("NFSv4/flexfiles: Commit path updates for striped layouts")

I have used the tree from yesterday instead.