mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-28 11:49:32 +00:00
![Daniel Borkmann](/assets/img/avatar_default.png)
Fengguang reported, that some randconfig generated the following linker
issue with nf_ct_zone_dflt object involved:
[...]
CC init/version.o
LD init/built-in.o
net/built-in.o: In function `ipv4_conntrack_defrag':
nf_defrag_ipv4.c:(.text+0x93e95): undefined reference to `nf_ct_zone_dflt'
net/built-in.o: In function `ipv6_defrag':
nf_defrag_ipv6_hooks.c:(.text+0xe3ffe): undefined reference to `nf_ct_zone_dflt'
make: *** [vmlinux] Error 1
Given that configurations exist where we have a built-in part, which is
accessing nf_ct_zone_dflt such as the two handlers nf_ct_defrag_user()
and nf_ct6_defrag_user(), and a part that configures nf_conntrack as a
module, we must move nf_ct_zone_dflt into a fixed, guaranteed built-in
area when netfilter is configured in general.
Therefore, split the more generic parts into a common header under
include/linux/netfilter/ and move nf_ct_zone_dflt into the built-in
section that already holds parts related to CONFIG_NF_CONNTRACK in the
netfilter core. This fixes the issue on my side.
Fixes: 308ac9143e
("netfilter: nf_conntrack: push zone object into functions")
Reported-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
23 lines
537 B
C
23 lines
537 B
C
#ifndef _NF_CONNTRACK_ZONES_COMMON_H
|
|
#define _NF_CONNTRACK_ZONES_COMMON_H
|
|
|
|
#include <uapi/linux/netfilter/nf_conntrack_tuple_common.h>
|
|
|
|
#define NF_CT_DEFAULT_ZONE_ID 0
|
|
|
|
#define NF_CT_ZONE_DIR_ORIG (1 << IP_CT_DIR_ORIGINAL)
|
|
#define NF_CT_ZONE_DIR_REPL (1 << IP_CT_DIR_REPLY)
|
|
|
|
#define NF_CT_DEFAULT_ZONE_DIR (NF_CT_ZONE_DIR_ORIG | NF_CT_ZONE_DIR_REPL)
|
|
|
|
#define NF_CT_FLAG_MARK 1
|
|
|
|
struct nf_conntrack_zone {
|
|
u16 id;
|
|
u8 flags;
|
|
u8 dir;
|
|
};
|
|
|
|
extern const struct nf_conntrack_zone nf_ct_zone_dflt;
|
|
|
|
#endif /* _NF_CONNTRACK_ZONES_COMMON_H */
|