diff options
author | Pavel Begunkov <asml.silence@gmail.com> | 2022-01-27 01:36:26 +0100 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2022-01-28 04:46:11 +0100 |
commit | 940ea00b0646f50170c2f66957a84c0ba1737f0c (patch) | |
tree | 439d846b77d12562a885d00419a97876023f933d /net/ipv6/udp.c | |
parent | ipv6: clean up cork setup/release (diff) | |
download | linux-940ea00b0646f50170c2f66957a84c0ba1737f0c.tar.xz linux-940ea00b0646f50170c2f66957a84c0ba1737f0c.zip |
ipv6: don't zero inet_cork_full::fl after use
It doesn't appear there is any reason for ip6_cork_release() to zero
cork->fl, it'll be fully filled on next initialisation. This 88 bytes
memset accounts to 0.3-0.5% of total CPU cycles.
It's also needed in following patches and allows to remove an extar flow
copy in udp_v6_push_pending_frames().
Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Reviewed-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net/ipv6/udp.c')
-rw-r--r-- | net/ipv6/udp.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index e221a6957b1f..3af1eea739a8 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -1266,23 +1266,17 @@ static int udp_v6_push_pending_frames(struct sock *sk) { struct sk_buff *skb; struct udp_sock *up = udp_sk(sk); - struct flowi6 fl6; int err = 0; if (up->pending == AF_INET) return udp_push_pending_frames(sk); - /* ip6_finish_skb will release the cork, so make a copy of - * fl6 here. - */ - fl6 = inet_sk(sk)->cork.fl.u.ip6; - skb = ip6_finish_skb(sk); if (!skb) goto out; - err = udp_v6_send_skb(skb, &fl6, &inet_sk(sk)->cork.base); - + err = udp_v6_send_skb(skb, &inet_sk(sk)->cork.fl.u.ip6, + &inet_sk(sk)->cork.base); out: up->len = 0; up->pending = 0; |