tcp: minor optimization in tcp_add_backlog()
[ Upstream commit d519f350967a60b85a574ad8aeac43f2b4384746 ]
If packet is going to be coalesced, sk_sndbuf/sk_rcvbuf values
are not used. Defer their access to the point we need them.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Stable-dep-of: ec791d8149ff ("tcp: fix a signed-integer-overflow bug in tcp_add_backlog()")
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
aab883bd60
commit
49713d7c38
|
|
@ -1770,8 +1770,7 @@ int tcp_v4_early_demux(struct sk_buff *skb)
|
||||||
|
|
||||||
bool tcp_add_backlog(struct sock *sk, struct sk_buff *skb)
|
bool tcp_add_backlog(struct sock *sk, struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
u32 limit = READ_ONCE(sk->sk_rcvbuf) + READ_ONCE(sk->sk_sndbuf);
|
u32 limit, tail_gso_size, tail_gso_segs;
|
||||||
u32 tail_gso_size, tail_gso_segs;
|
|
||||||
struct skb_shared_info *shinfo;
|
struct skb_shared_info *shinfo;
|
||||||
const struct tcphdr *th;
|
const struct tcphdr *th;
|
||||||
struct tcphdr *thtail;
|
struct tcphdr *thtail;
|
||||||
|
|
@ -1878,7 +1877,7 @@ no_coalesce:
|
||||||
* to reduce memory overhead, so add a little headroom here.
|
* to reduce memory overhead, so add a little headroom here.
|
||||||
* Few sockets backlog are possibly concurrently non empty.
|
* Few sockets backlog are possibly concurrently non empty.
|
||||||
*/
|
*/
|
||||||
limit += 64*1024;
|
limit = READ_ONCE(sk->sk_rcvbuf) + READ_ONCE(sk->sk_sndbuf) + 64*1024;
|
||||||
|
|
||||||
if (unlikely(sk_add_backlog(sk, skb, limit))) {
|
if (unlikely(sk_add_backlog(sk, skb, limit))) {
|
||||||
bh_unlock_sock(sk);
|
bh_unlock_sock(sk);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue