Module build fails on CentOS 8 kernel-4.18.0-168

Christopher Spiller self at chrisspiller.me
Sat Jan 18 05:58:04 CET 2020


I noticed wireguard failing to start after a recent upgrade. After a
bit of digging, I found the dkms build failing. From the build log:


/var/lib/dkms/wireguard/0.0.20200105/build/compat/compat.h:838:21:
error: redeclaration of enumerator ‘NLA_UNSPEC’
 #define NLA_MIN_LEN NLA_UNSPEC
                     ^~~~~~~~~~
./include/net/netlink.h:186:2: note: in expansion of macro ‘NLA_MIN_LEN’
  NLA_MIN_LEN,
  ^~~~~~~~~~~
In file included from ./include/net/rtnetlink.h:6,
                 from ./include/net/sch_generic.h:19,
                 from ./include/linux/filter.h:25,
                 from ./include/net/sock.h:64,
                 from ./include/linux/tcp.h:23,
                 from ./include/linux/ipv6.h:106,
                 from ./include/net/ipv6.h:16,
                 from
/var/lib/dkms/wireguard/0.0.20200105/build/compat/compat.h:896,
                 from <command-line>:
./include/net/netlink.h:166:2: note: previous definition of
‘NLA_UNSPEC’ was here
  NLA_UNSPEC,
  ^~~~~~~~~~


./include/net/ip6_fib.h: In function ‘fib6_info_release’:
/var/lib/dkms/wireguard/0.0.20200105/build/compat/compat.h:822:18:
error: implicit declaration of function ‘call_rcu_bh’; did you mean
‘call_rcu’? [-Werror=implicit-function-declaration]
 #define call_rcu call_rcu_bh
                  ^~~~~~~~~~~
./include/net/ip6_fib.h:300:3: note: in expansion of macro ‘call_rcu’
   call_rcu(&f6i->rcu, fib6_info_destroy_rcu);
   ^~~~~~~~


/var/lib/dkms/wireguard/0.0.20200105/build/queueing.h: In function
‘wg_reset_packet’:
/var/lib/dkms/wireguard/0.0.20200105/build/compat/compat.h:788:39:
error: too many arguments to function ‘skb_probe_transport_header’
 #define skb_probe_transport_header(a) skb_probe_transport_header(a, 0)
                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/wireguard/0.0.20200105/build/queueing.h:106:2: note: in
expansion of macro ‘skb_probe_transport_header’
  skb_probe_transport_header(skb);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from
/var/lib/dkms/wireguard/0.0.20200105/build/compat/compat.h:787,
                 from <command-line>:
./include/linux/skbuff.h:2564:20: note: declared here
 static inline void skb_probe_transport_header(struct sk_buff *skb)
                    ^~~~~~~~~~~~~~~~~~~~~~~~~~


I'm not sure about the redeclaration of enumerator or implicit
declaration errors, but I did find a change to
skb_probe_transport_header here:
https://github.com/torvalds/linux/commit/d2aa125d629080c4f3e31f23b7f612ef6b8492ac#diff-ce59bbd8b4efd2475bfd7b50fe420671


Thanks,
Chris


More information about the WireGuard mailing list