mirror of https://gitee.com/openkylin/linux.git
net: move somaxconn init from sysctl code
The default value for somaxconn is set in sysctl_core_net_init(), but this
function is not called when kernel is configured without CONFIG_SYSCTL.
This results in the kernel not being able to accept TCP connections,
because the backlog has zero size. Usually, the user ends up with:
"TCP: request_sock_TCP: Possible SYN flooding on port 7. Dropping request. Check SNMP counters."
If SYN cookies are not enabled the connection is rejected.
Before ef547f2ac1
(tcp: remove max_qlen_log), the effects were less
severe, because the backlog was always at least eight slots long.
Signed-off-by: Roman Kapl <roman.kapl@sysgo.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
65d786c21b
commit
7c3f1875c6
|
@ -315,6 +315,25 @@ static __net_init int setup_net(struct net *net, struct user_namespace *user_ns)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int __net_init net_defaults_init_net(struct net *net)
|
||||||
|
{
|
||||||
|
net->core.sysctl_somaxconn = SOMAXCONN;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct pernet_operations net_defaults_ops = {
|
||||||
|
.init = net_defaults_init_net,
|
||||||
|
};
|
||||||
|
|
||||||
|
static __init int net_defaults_init(void)
|
||||||
|
{
|
||||||
|
if (register_pernet_subsys(&net_defaults_ops))
|
||||||
|
panic("Cannot initialize net default settings");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
core_initcall(net_defaults_init);
|
||||||
|
|
||||||
#ifdef CONFIG_NET_NS
|
#ifdef CONFIG_NET_NS
|
||||||
static struct ucounts *inc_net_namespaces(struct user_namespace *ns)
|
static struct ucounts *inc_net_namespaces(struct user_namespace *ns)
|
||||||
|
|
|
@ -479,8 +479,6 @@ static __net_init int sysctl_core_net_init(struct net *net)
|
||||||
{
|
{
|
||||||
struct ctl_table *tbl;
|
struct ctl_table *tbl;
|
||||||
|
|
||||||
net->core.sysctl_somaxconn = SOMAXCONN;
|
|
||||||
|
|
||||||
tbl = netns_core_table;
|
tbl = netns_core_table;
|
||||||
if (!net_eq(net, &init_net)) {
|
if (!net_eq(net, &init_net)) {
|
||||||
tbl = kmemdup(tbl, sizeof(netns_core_table), GFP_KERNEL);
|
tbl = kmemdup(tbl, sizeof(netns_core_table), GFP_KERNEL);
|
||||||
|
|
Loading…
Reference in New Issue