summaryrefslogtreecommitdiff
path: root/net/ipv6
diff options
context:
space:
mode:
authorFernando Fernandez Mancera <fmancera@suse.de>2026-03-25 13:08:42 +0100
committerJakub Kicinski <kuba@kernel.org>2026-03-29 11:21:22 -0700
commit309b905deee595619cc38719f48d63d57b8bff3d (patch)
tree877158428ba63e826349eff2a21faa18682b2dc8 /net/ipv6
parentced629dc8e5c51ff2b5d847adeeb1035cd655d58 (diff)
downloadlwn-309b905deee595619cc38719f48d63d57b8bff3d.tar.gz
lwn-309b905deee595619cc38719f48d63d57b8bff3d.zip
ipv6: convert CONFIG_IPV6 to built-in only and clean up Kconfigs
Maintaining a modular IPv6 stack offers image size savings for specific setups, this benefit is outweighed by the architectural burden it imposes on the subsystems on implementation and maintenance. Therefore, drop it. Change CONFIG_IPV6 from tristate to bool. Remove all Kconfig dependencies across the tree that explicitly checked for IPV6=m. In addition, remove MODULE_DESCRIPTION(), MODULE_ALIAS(), MODULE_AUTHOR() and MODULE_LICENSE(). This is also replacing module_init() by device_initcall(). It is not possible to use fs_initcall() as IPv4 does because that creates a race condition on IPv6 addrconf. Finally, modify the default configs from CONFIG_IPV6=m to CONFIG_IPV6=y except for m68k as according to the bloat-o-meter the image is increasing by 330KB~ and that isn't acceptable. Instead, disable IPv6 on this architecture by default. This is aligned with m68k RAM requirements and recommendations [1]. [1] http://www.linux-m68k.org/faq/ram.html Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de> Tested-by: Ricardo B. Marlière <rbm@suse.com> Acked-by: Krzysztof Kozlowski <krzk@kernel.org> # arm64 Link: https://patch.msgid.link/20260325120928.15848-2-fmancera@suse.de Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/ipv6')
-rw-r--r--net/ipv6/Kconfig6
-rw-r--r--net/ipv6/af_inet6.c8
2 files changed, 2 insertions, 12 deletions
diff --git a/net/ipv6/Kconfig b/net/ipv6/Kconfig
index b8f9a8c0302e..c024aa77f25b 100644
--- a/net/ipv6/Kconfig
+++ b/net/ipv6/Kconfig
@@ -3,9 +3,8 @@
# IPv6 configuration
#
-# IPv6 as module will cause a CRASH if you try to unload it
menuconfig IPV6
- tristate "The IPv6 protocol"
+ bool "The IPv6 protocol"
default y
select CRYPTO_LIB_SHA1
help
@@ -17,9 +16,6 @@ menuconfig IPV6
Documentation/networking/ipv6.rst and read the HOWTO at
<https://www.tldp.org/HOWTO/Linux+IPv6-HOWTO/>
- To compile this protocol support as a module, choose M here: the
- module will be called ipv6.
-
if IPV6
config IPV6_ROUTER_PREF
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
index eb9fff86baa1..bb29b29fdcfb 100644
--- a/net/ipv6/af_inet6.c
+++ b/net/ipv6/af_inet6.c
@@ -70,10 +70,6 @@
#include "ip6_offload.h"
-MODULE_AUTHOR("Cast of dozens");
-MODULE_DESCRIPTION("IPv6 protocol stack for Linux");
-MODULE_LICENSE("GPL");
-
/* The inetsw6 table contains everything that inet6_create needs to
* build a new socket.
*/
@@ -1278,6 +1274,4 @@ out_unregister_tcp_proto:
proto_unregister(&tcpv6_prot);
goto out;
}
-module_init(inet6_init);
-
-MODULE_ALIAS_NETPROTO(PF_INET6);
+device_initcall(inet6_init);