forked from Minki/linux
7f678def99
Christoph Paasch reports [1] about incorrect skb->truesize after skb_expand_head() call in ip6_xmit. This may happen because of two reasons: - skb_set_owner_w() for newly cloned skb is called too early, before pskb_expand_head() where truesize is adjusted for (!skb-sk) case. - pskb_expand_head() does not adjust truesize in (skb->sk) case. In this case sk->sk_wmem_alloc should be adjusted too. [1] https://lkml.org/lkml/2021/8/20/1082 Fixes:f1260ff15a
("skbuff: introduce skb_expand_head()") Fixes:2d85a1b31d
("ipv6: ip6_finish_output2: set sk into newly allocated nskb") Reported-by: Christoph Paasch <christoph.paasch@gmail.com> Signed-off-by: Vasily Averin <vvs@virtuozzo.com> Reviewed-by: Eric Dumazet <edumazet@google.com> Link: https://lore.kernel.org/r/644330dd-477e-0462-83bf-9f514c41edd1@virtuozzo.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
13 lines
362 B
C
13 lines
362 B
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
#ifndef _NET_CORE_SOCK_DESTRUCTOR_H
|
|
#define _NET_CORE_SOCK_DESTRUCTOR_H
|
|
#include <net/tcp.h>
|
|
|
|
static inline bool is_skb_wmem(const struct sk_buff *skb)
|
|
{
|
|
return skb->destructor == sock_wfree ||
|
|
skb->destructor == __sock_wfree ||
|
|
(IS_ENABLED(CONFIG_INET) && skb->destructor == tcp_wfree);
|
|
}
|
|
#endif
|