netfilter: nf_defrag: mark xt_table structures 'const' again
authorArnd Bergmann <arnd@arndb.de>
Mon, 15 Jan 2018 15:49:05 +0000 (16:49 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 16 Jan 2018 00:52:07 +0000 (01:52 +0100)
commitb069b37adb1472b58f44606c8bdfe9d8da71a28c
tree29d93089c88fb94a1a948a4948fcbd6bc1b9b764
parent83f1999caeb14e15df205e80d210699951733287
netfilter: nf_defrag: mark xt_table structures 'const' again

As a side-effect of adding the module option, we now get a section
mismatch warning:

WARNING: net/ipv4/netfilter/iptable_raw.o(.data+0x1c): Section mismatch in reference from the variable packet_raw to the function .init.text:iptable_raw_table_init()
The variable packet_raw references
the function __init iptable_raw_table_init()
If the reference is valid then annotate the
variable with __init* or __refdata (see linux/init.h) or name the variable:
*_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console

Apparently it's ok to link to a __net_init function from .rodata but not
from .data. We can address this by rearranging the logic so that the
structure is read-only again. Instead of writing to the .priority field
later, we have an extra copies of the structure with that flag. An added
advantage is that that we don't have writable function pointers with this
approach.

Fixes: 902d6a4c2a4f ("netfilter: nf_defrag: Skip defrag if NOTRACK is set")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/ipv4/netfilter/iptable_raw.c
net/ipv6/netfilter/ip6table_raw.c