lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <20231011034344.104398-5-npiggin@gmail.com> Date: Wed, 11 Oct 2023 13:43:41 +1000 From: Nicholas Piggin <npiggin@...il.com> To: netdev@...r.kernel.org Cc: Nicholas Piggin <npiggin@...il.com>, dev@...nvswitch.org, Pravin B Shelar <pshelar@....org>, Aaron Conole <aconole@...hat.com>, "Eelco Chaudron" <echaudro@...hat.com>, "Ilya Maximets" <imaximet@...hat.com>, "Flavio Leitner" <fbl@...hat.com> Subject: [PATCH 4/7] net: openvswitch: Reduce push_nsh stack usage Use percpu data to move the large temporary buffer off the push_nsh stack. This reduces stack consumption from 336 bytes to 64 bytes. Signed-off-by: Nicholas Piggin <npiggin@...il.com> --- net/openvswitch/actions.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/net/openvswitch/actions.c b/net/openvswitch/actions.c index be15ef693284..fa53e22f3ebe 100644 --- a/net/openvswitch/actions.c +++ b/net/openvswitch/actions.c @@ -349,12 +349,18 @@ static int push_eth(struct sk_buff *skb, struct sw_flow_key *key, return 0; } +struct tmp_nsh_hdr { + u8 data[NSH_HDR_MAX_LEN]; +}; + +static DEFINE_PER_CPU(struct tmp_nsh_hdr, tmp_nsh_hdr); + static noinline_for_stack int push_nsh(struct sk_buff *skb, struct sw_flow_key *key, const struct nlattr *a) { - u8 buffer[NSH_HDR_MAX_LEN]; - struct nshhdr *nh = (struct nshhdr *)buffer; + struct tmp_nsh_hdr *hdr = this_cpu_ptr(&tmp_nsh_hdr); + struct nshhdr *nh = (struct nshhdr *)&hdr->data[0]; int err; err = nsh_hdr_from_nlattr(a, nh, NSH_HDR_MAX_LEN); -- 2.42.0
Powered by blists - more mailing lists