Message ID | 20240506141444.145946-1-aleksandr.mikhalitsyn@canonical.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 643bb5dbaef7d01f9bcf2a495bef855e81fd5714 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [v4,1/2] ipvs: add READ_ONCE barrier for ipvs->sysctl_amemthresh | expand |
Hello, On Mon, 6 May 2024, Alexander Mikhalitsyn wrote: > Cc: Julian Anastasov <ja@ssi.bg> > Cc: Simon Horman <horms@verge.net.au> > Cc: Pablo Neira Ayuso <pablo@netfilter.org> > Cc: Jozsef Kadlecsik <kadlec@netfilter.org> > Cc: Florian Westphal <fw@strlen.de> > Suggested-by: Julian Anastasov <ja@ssi.bg> > Signed-off-by: Alexander Mikhalitsyn <aleksandr.mikhalitsyn@canonical.com> Looks good to me for net-next, thanks! Acked-by: Julian Anastasov <ja@ssi.bg> > --- > net/netfilter/ipvs/ip_vs_ctl.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c > index 50b5dbe40eb8..e122fa367b81 100644 > --- a/net/netfilter/ipvs/ip_vs_ctl.c > +++ b/net/netfilter/ipvs/ip_vs_ctl.c > @@ -94,6 +94,7 @@ static void update_defense_level(struct netns_ipvs *ipvs) > { > struct sysinfo i; > int availmem; > + int amemthresh; > int nomem; > int to_change = -1; > > @@ -105,7 +106,8 @@ static void update_defense_level(struct netns_ipvs *ipvs) > /* si_swapinfo(&i); */ > /* availmem = availmem - (i.totalswap - i.freeswap); */ > > - nomem = (availmem < ipvs->sysctl_amemthresh); > + amemthresh = max(READ_ONCE(ipvs->sysctl_amemthresh), 0); > + nomem = (availmem < amemthresh); > > local_bh_disable(); > > @@ -145,9 +147,8 @@ static void update_defense_level(struct netns_ipvs *ipvs) > break; > case 1: > if (nomem) { > - ipvs->drop_rate = ipvs->drop_counter > - = ipvs->sysctl_amemthresh / > - (ipvs->sysctl_amemthresh-availmem); > + ipvs->drop_counter = amemthresh / (amemthresh - availmem); > + ipvs->drop_rate = ipvs->drop_counter; > ipvs->sysctl_drop_packet = 2; > } else { > ipvs->drop_rate = 0; > @@ -155,9 +156,8 @@ static void update_defense_level(struct netns_ipvs *ipvs) > break; > case 2: > if (nomem) { > - ipvs->drop_rate = ipvs->drop_counter > - = ipvs->sysctl_amemthresh / > - (ipvs->sysctl_amemthresh-availmem); > + ipvs->drop_counter = amemthresh / (amemthresh - availmem); > + ipvs->drop_rate = ipvs->drop_counter; > } else { > ipvs->drop_rate = 0; > ipvs->sysctl_drop_packet = 1; > -- > 2.34.1 Regards -- Julian Anastasov <ja@ssi.bg>
Hello: This series was applied to netdev/net-next.git (main) by David S. Miller <davem@davemloft.net>: On Mon, 6 May 2024 16:14:43 +0200 you wrote: > Cc: Julian Anastasov <ja@ssi.bg> > Cc: Simon Horman <horms@verge.net.au> > Cc: Pablo Neira Ayuso <pablo@netfilter.org> > Cc: Jozsef Kadlecsik <kadlec@netfilter.org> > Cc: Florian Westphal <fw@strlen.de> > Suggested-by: Julian Anastasov <ja@ssi.bg> > Signed-off-by: Alexander Mikhalitsyn <aleksandr.mikhalitsyn@canonical.com> > > [...] Here is the summary with links: - [v4,1/2] ipvs: add READ_ONCE barrier for ipvs->sysctl_amemthresh https://git.kernel.org/netdev/net-next/c/643bb5dbaef7 - [v4,2/2] ipvs: allow some sysctls in non-init user namespaces https://git.kernel.org/netdev/net-next/c/2b696a2a101d You are awesome, thank you!
diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c index 50b5dbe40eb8..e122fa367b81 100644 --- a/net/netfilter/ipvs/ip_vs_ctl.c +++ b/net/netfilter/ipvs/ip_vs_ctl.c @@ -94,6 +94,7 @@ static void update_defense_level(struct netns_ipvs *ipvs) { struct sysinfo i; int availmem; + int amemthresh; int nomem; int to_change = -1; @@ -105,7 +106,8 @@ static void update_defense_level(struct netns_ipvs *ipvs) /* si_swapinfo(&i); */ /* availmem = availmem - (i.totalswap - i.freeswap); */ - nomem = (availmem < ipvs->sysctl_amemthresh); + amemthresh = max(READ_ONCE(ipvs->sysctl_amemthresh), 0); + nomem = (availmem < amemthresh); local_bh_disable(); @@ -145,9 +147,8 @@ static void update_defense_level(struct netns_ipvs *ipvs) break; case 1: if (nomem) { - ipvs->drop_rate = ipvs->drop_counter - = ipvs->sysctl_amemthresh / - (ipvs->sysctl_amemthresh-availmem); + ipvs->drop_counter = amemthresh / (amemthresh - availmem); + ipvs->drop_rate = ipvs->drop_counter; ipvs->sysctl_drop_packet = 2; } else { ipvs->drop_rate = 0; @@ -155,9 +156,8 @@ static void update_defense_level(struct netns_ipvs *ipvs) break; case 2: if (nomem) { - ipvs->drop_rate = ipvs->drop_counter - = ipvs->sysctl_amemthresh / - (ipvs->sysctl_amemthresh-availmem); + ipvs->drop_counter = amemthresh / (amemthresh - availmem); + ipvs->drop_rate = ipvs->drop_counter; } else { ipvs->drop_rate = 0; ipvs->sysctl_drop_packet = 1;
Cc: Julian Anastasov <ja@ssi.bg> Cc: Simon Horman <horms@verge.net.au> Cc: Pablo Neira Ayuso <pablo@netfilter.org> Cc: Jozsef Kadlecsik <kadlec@netfilter.org> Cc: Florian Westphal <fw@strlen.de> Suggested-by: Julian Anastasov <ja@ssi.bg> Signed-off-by: Alexander Mikhalitsyn <aleksandr.mikhalitsyn@canonical.com> --- net/netfilter/ipvs/ip_vs_ctl.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)