Package: iptables-netflow-dkms Version: 2.5.1-2 Severity: grave Tags: patch bullseye
Since linux-image-5.10.0-31-amd64/5.10.221-1, ipt_NETFLOW.ko no more builds on Debian 11 Bullseye: Citing from /var/lib/dkms/ipt-netflow/2.5.1/build/make.log: DKMS make.log for ipt-netflow-2.5.1 for kernel 5.10.0-31-amd64 (x86_64) Tue Jul 16 16:17:06 UTC 2024 ./gen_compat_def > compat_def.h Test symbol xt_family linux/netfilter_ipv4/ip_tables.h Test struct timeval linux/ktime.h Test struct proc_ops linux/proc_fs.h Test symbol synchronize_sched linux/rcupdate.h Compiling for kernel 5.10.221 make -C /lib/modules/5.10.0-31-amd64/build M=/var/lib/dkms/ipt-netflow/2.5.1/build modules CONFIG_DEBUG_INFO make[1]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule. make[1]: Entering directory '/usr/src/linux-headers-5.10.0-31-amd64' CC [M] /var/lib/dkms/ipt-netflow/2.5.1/build/ipt_NETFLOW.o /var/lib/dkms/ipt-netflow/2.5.1/build/ipt_NETFLOW.c: In function 'nf_seq_show': /var/lib/dkms/ipt-netflow/2.5.1/build/ipt_NETFLOW.c:755:39: warning: format '%lu' expects argument of type ' 3 has type 's64' {aka 'long long int'} [-Wformat=] 755 | seq_printf(seq, " Flows selected %lu, discarded %lu.", | ~~^ | | | long unsigned int | %llu /var/lib/dkms/ipt-netflow/2.5.1/build/ipt_NETFLOW.c:755:54: warning: format '%lu' expects argument of type ' 4 has type 's64' {aka 'long long int'} [-Wformat=] 755 | seq_printf(seq, " Flows selected %lu, discarded %lu.", | ~~^ | | | long unsigned int | %llu /var/lib/dkms/ipt-netflow/2.5.1/build/ipt_NETFLOW.c:759:39: warning: format '%lu' expects argument of type ' 3 has type 's64' {aka 'long long int'} [-Wformat=] 759 | seq_printf(seq, " Flows selected %lu.", atomic64_read(&flows_selected)); | ~~^ | | | long unsigned int | %llu MODPOST /var/lib/dkms/ipt-netflow/2.5.1/build/Module.symvers ERROR: modpost: "find_module" [/var/lib/dkms/ipt-netflow/2.5.1/build/ipt_NETFLOW.ko] undefined! make[3]: *** [/usr/src/linux-headers-5.10.0-31-common/scripts/Makefile.modpost:123: /var/lib/dkms/ipt-netfloror 1 make[3]: *** Deleting file '/var/lib/dkms/ipt-netflow/2.5.1/build/Module.symvers' make[2]: *** [/usr/src/linux-headers-5.10.0-31-common/Makefile:1783: modules] Error 2 make[1]: *** [/usr/src/linux-headers-5.10.0-31-common/Makefile:192: __sub-make] Error 2 make[1]: Leaving directory '/usr/src/linux-headers-5.10.0-31-amd64' make: *** [Makefile:25: ipt_NETFLOW.ko] Error 2 This happens, because upstream kernel 5.10.220 backported this change from kernel 5.12: - module: unexport find_module and module_mutex Backporting upstream commit https://github.com/aabc/ipt-netflow/commit/5aae3791922bd3df878605b15e83ea48a4bd096c with updated version constraint fixes the issue: Index: iptables-netflow-2.5.1/compat.h =================================================================== --- iptables-netflow-2.5.1.orig/compat.h +++ iptables-netflow-2.5.1/compat.h @@ -749,4 +749,29 @@ unsigned long long strtoul(const char *c return result; } +#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,12,0) || LINUX_VERSION_CODE >= KERNEL_VERSION(5,10,220) +/* + * find_module() is unexported in v5.12: + * 089049f6c9956 ("module: unexport find_module and module_mutex") + * and module_mutex is replaced with RCU in + * a006050575745 ("module: use RCU to synchronize find_module") + */ +#include <linux/rcupdate.h> +struct module *find_module(const char *name) +{ + struct module *mod; + + rcu_read_lock_sched(); + /* Yes this is crazy, but should work. */ + list_for_each_entry_rcu(mod, &THIS_MODULE->list, list) { + if (!strcmp(mod->name, name)) { + rcu_read_unlock_sched(); + return mod; + } + } + rcu_read_unlock_sched(); + return NULL; +} +#endif + #endif /* COMPAT_NETFLOW_H */ I intend to do a bullseye-proposed-stable upload for that.