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

From: Mark Brown <[email-masked]>
Date: Tue, 16 Sep 2025 13:17:28 +0100

Hi all,

After merging the vhost tree, today's linux-next build (x86_64 allmodconfig)
failed like this:

/tmp/next/build/drivers/vhost/net.c: In function 'handle_tx_copy':
/tmp/next/build/drivers/vhost/net.c:855:1: error: expected 'while' before 'static'
  855 | static void handle_tx_zerocopy(struct vhost_net *net, struct socket *sock)
      | ^~~~~~
/tmp/next/build/drivers/vhost/net.c:964:13: error: invalid storage class for function 'handle_tx'
  964 | static void handle_tx(struct vhost_net *net)
      |             ^~~~~~~~~
/tmp/next/build/drivers/vhost/net.c: In function 'handle_tx':
/tmp/next/build/drivers/vhost/net.c:982:17: error: implicit declaration of function 'handle_tx_zerocopy'; did you mean 'handle_tx_copy'? [-Wimplicit-function-declaration]
  982 |                 handle_tx_zerocopy(net, sock);
      |                 ^~~~~~~~~~~~~~~~~~
      |                 handle_tx_copy
/tmp/next/build/drivers/vhost/net.c: In function 'handle_tx_copy':
/tmp/next/build/drivers/vhost/net.c:990:12: error: invalid storage class for function 'peek_head_len'
  990 | static int peek_head_len(struct vhost_net_virtqueue *rvq, struct sock *sk)
      |            ^~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1011:12: error: invalid storage class for function 'vhost_net_rx_peek_head_len'
 1011 | static int vhost_net_rx_peek_head_len(struct vhost_net *net, struct sock *sk,
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1043:12: error: invalid storage class for function 'get_rx_bufs'
 1043 | static int get_rx_bufs(struct vhost_net_virtqueue *nvq,
      |            ^~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1126:13: error: invalid storage class for function 'handle_rx'
 1126 | static void handle_rx(struct vhost_net *net)
      |             ^~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1281:13: error: invalid storage class for function 'handle_tx_kick'
 1281 | static void handle_tx_kick(struct vhost_work *work)
      |             ^~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1290:13: error: invalid storage class for function 'handle_rx_kick'
 1290 | static void handle_rx_kick(struct vhost_work *work)
      |             ^~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1299:13: error: invalid storage class for function 'handle_tx_net'
 1299 | static void handle_tx_net(struct vhost_work *work)
      |             ^~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1306:13: error: invalid storage class for function 'handle_rx_net'
 1306 | static void handle_rx_net(struct vhost_work *work)
      |             ^~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1313:12: error: invalid storage class for function 'vhost_net_open'
 1313 | static int vhost_net_open(struct inode *inode, struct file *f)
      |            ^~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1381:23: error: invalid storage class for function 'vhost_net_stop_vq'
 1381 | static struct socket *vhost_net_stop_vq(struct vhost_net *n,
      |                       ^~~~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1398:13: error: invalid storage class for function 'vhost_net_stop'
 1398 | static void vhost_net_stop(struct vhost_net *n, struct socket **tx_sock,
      |             ^~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1405:13: error: invalid storage class for function 'vhost_net_flush'
 1405 | static void vhost_net_flush(struct vhost_net *n)
      |             ^~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1421:12: error: invalid storage class for function 'vhost_net_release'
 1421 | static int vhost_net_release(struct inode *inode, struct file *f)
      |            ^~~~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1449:23: error: invalid storage class for function 'get_raw_socket'
 1449 | static struct socket *get_raw_socket(int fd)
      |                       ^~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1473:25: error: invalid storage class for function 'get_tap_ptr_ring'
 1473 | static struct ptr_ring *get_tap_ptr_ring(struct file *file)
      |                         ^~~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1487:23: error: invalid storage class for function 'get_tap_socket'
 1487 | static struct socket *get_tap_socket(int fd)
      |                       ^~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1503:23: error: invalid storage class for function 'get_socket'
 1503 | static struct socket *get_socket(int fd)
      |                       ^~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1519:13: error: invalid storage class for function 'vhost_net_set_backend'
 1519 | static long vhost_net_set_backend(struct vhost_net *n, unsigned index, int fd)
      |             ^~~~~~~~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1620:13: error: invalid storage class for function 'vhost_net_reset_owner'
 1620 | static long vhost_net_reset_owner(struct vhost_net *n)
      |             ^~~~~~~~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1650:12: error: invalid storage class for function 'vhost_net_set_features'
 1650 | static int vhost_net_set_features(struct vhost_net *n, const u64 *features)
      |            ^~~~~~~~~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1701:13: error: invalid storage class for function 'vhost_net_set_owner'
 1701 | static long vhost_net_set_owner(struct vhost_net *n)
      |             ^~~~~~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1722:13: error: invalid storage class for function 'vhost_net_ioctl'
 1722 | static long vhost_net_ioctl(struct file *f, unsigned int ioctl,
      |             ^~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1821:16: error: invalid storage class for function 'vhost_net_chr_read_iter'
 1821 | static ssize_t vhost_net_chr_read_iter(struct kiocb *iocb, struct iov_iter *to)
      |                ^~~~~~~~~~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1831:16: error: invalid storage class for function 'vhost_net_chr_write_iter'
 1831 | static ssize_t vhost_net_chr_write_iter(struct kiocb *iocb,
      |                ^~~~~~~~~~~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1841:17: error: invalid storage class for function 'vhost_net_chr_poll'
 1841 | static __poll_t vhost_net_chr_poll(struct file *file, poll_table *wait)
      |                 ^~~~~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1851:27: error: initializer element is not constant
 1851 |         .release        = vhost_net_release,
      |                           ^~~~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1851:27: note: (near initialization for 'vhost_net_fops.release')
/tmp/next/build/drivers/vhost/net.c:1852:27: error: initializer element is not constant
 1852 |         .read_iter      = vhost_net_chr_read_iter,
      |                           ^~~~~~~~~~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1852:27: note: (near initialization for 'vhost_net_fops.read_iter')
/tmp/next/build/drivers/vhost/net.c:1853:27: error: initializer element is not constant
 1853 |         .write_iter     = vhost_net_chr_write_iter,
      |                           ^~~~~~~~~~~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1853:27: note: (near initialization for 'vhost_net_fops.write_iter')
/tmp/next/build/drivers/vhost/net.c:1854:27: error: initializer element is not constant
 1854 |         .poll           = vhost_net_chr_poll,
      |                           ^~~~~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1854:27: note: (near initialization for 'vhost_net_fops.poll')
/tmp/next/build/drivers/vhost/net.c:1855:27: error: initializer element is not constant
 1855 |         .unlocked_ioctl = vhost_net_ioctl,
      |                           ^~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1855:27: note: (near initialization for 'vhost_net_fops.unlocked_ioctl')
/tmp/next/build/drivers/vhost/net.c:1857:27: error: initializer element is not constant
 1857 |         .open           = vhost_net_open,
      |                           ^~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1857:27: note: (near initialization for 'vhost_net_fops.open')
/tmp/next/build/drivers/vhost/net.c:1867:19: error: invalid storage class for function 'vhost_net_init'
 1867 | static int __init vhost_net_init(void)
      |                   ^~~~~~~~~~~~~~
In file included from /tmp/next/build/include/linux/device/driver.h:21,
                 from /tmp/next/build/include/linux/device.h:32,
                 from /tmp/next/build/include/linux/virtio.h:9,
                 from /tmp/next/build/include/linux/virtio_config.h:7,
                 from /tmp/next/build/include/uapi/linux/vhost_types.h:16,
                 from /tmp/next/build/include/uapi/linux/vhost.h:14,
                 from /tmp/next/build/drivers/vhost/net.c:10:
/tmp/next/build/include/linux/module.h:132:49: error: invalid storage class for function '__inittest'
  132 |         static inline initcall_t __maybe_unused __inittest(void)                \
      |                                                 ^~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1873:1: note: in expansion of macro 'module_init'
 1873 | module_init(vhost_net_init);
      | ^~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1873:1: error: 'alias' attribute ignored [-Werror=attributes]
/tmp/next/build/drivers/vhost/net.c:1875:20: error: invalid storage class for function 'vhost_net_exit'
 1875 | static void __exit vhost_net_exit(void)
      |                    ^~~~~~~~~~~~~~
/tmp/next/build/include/linux/module.h:140:49: error: invalid storage class for function '__exittest'
  140 |         static inline exitcall_t __maybe_unused __exittest(void)                \
      |                                                 ^~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1879:1: note: in expansion of macro 'module_exit'
 1879 | module_exit(vhost_net_exit);
      | ^~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:1879:1: error: 'alias' attribute ignored [-Werror=attributes]
/tmp/next/build/drivers/vhost/net.c:1886:1: error: expected declaration or statement at end of input
 1886 | MODULE_ALIAS("devname:vhost-net");
      | ^~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c: At top level:
/tmp/next/build/drivers/vhost/net.c:620:13: error: 'vhost_exceeds_maxpend' defined but not used [-Werror=unused-function]
  620 | static bool vhost_exceeds_maxpend(struct vhost_net *net)
      |             ^~~~~~~~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:340:13: error: 'vhost_net_tx_select_zcopy' defined but not used [-Werror=unused-function]
  340 | static bool vhost_net_tx_select_zcopy(struct vhost_net *net)
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~
/tmp/next/build/drivers/vhost/net.c:326:13: error: 'vhost_net_tx_packet' defined but not used [-Werror=unused-function]
  326 | static void vhost_net_tx_packet(struct vhost_net *net)
      |             ^~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[5]: *** [/tmp/next/build/scripts/Makefile.build:287: drivers/vhost/net.o] Error 1
make[4]: *** [/tmp/next/build/scripts/Makefile.build:556: drivers/vhost] Error 2
make[4]: *** Waiting for unfinished jobs....
make[3]: *** [/tmp/next/build/scripts/Makefile.build:556: drivers] Error 2
make[2]: *** [/tmp/next/build/Makefile:2010: .] Error 2
make[1]: *** [/tmp/next/build/Makefile:248: __sub-make] Error 2
make: *** [Makefile:248: __sub-make] Error 2
Command exited with non-zero status 2
16291.57user 1243.39system 1:51.12elapsed 15780%CPU (0avgtext+0avgdata 1397196maxresident)k
0inputs+0outputs (4572major+208444472minor)pagefaults 0swaps

Caused by commit

   41bafbdcd27bf ("vhost-net: flush batched before enabling notifications")

I have used the tree from 20250915 instead.