net: switch to storing KCOV handle directly in sk_buff
[ Upstream commit fa69ee5aa48b5b52e8028c2eb486906e9998d081 ] It turns out that usage of skb extensions can cause memory leaks. Ido Schimmel reported: "[...] there are instances that blindly overwrite 'skb->extensions' by invoking skb_copy_header() after __alloc_skb()." Therefore, give up on using skb extensions for KCOV handle, and instead directly store kcov_handle in sk_buff. Fixes: 6370cc3bbd8a ("net: add kcov handle to skb extensions") Fixes: 85ce50d337d1 ("net: kcov: don't select SKB_EXTENSIONS when there is no NET") Fixes: 97f53a08cba1 ("net: linux/skbuff.h: combine SKB_EXTENSIONS + KCOV handling") Link: https://lore.kernel.org/linux-wireless/20201121160941.GA485907@shredder.lan/ Reported-by: Ido Schimmel <idosch@idosch.org> Signed-off-by: Marco Elver <elver@google.com> Link: https://lore.kernel.org/r/20201125224840.2014773-1-elver@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> Stable-dep-of: db0b124f02ba ("igc: Enhance Qbv scheduling by using first flag bit") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
3d5f83a62e
commit
67349025f0
@@ -4258,9 +4258,6 @@ static const u8 skb_ext_type_len[] = {
|
||||
#if IS_ENABLED(CONFIG_MPTCP)
|
||||
[SKB_EXT_MPTCP] = SKB_EXT_CHUNKSIZEOF(struct mptcp_ext),
|
||||
#endif
|
||||
#if IS_ENABLED(CONFIG_KCOV)
|
||||
[SKB_EXT_KCOV_HANDLE] = SKB_EXT_CHUNKSIZEOF(u64),
|
||||
#endif
|
||||
};
|
||||
|
||||
static __always_inline unsigned int skb_ext_total_length(void)
|
||||
@@ -4277,9 +4274,6 @@ static __always_inline unsigned int skb_ext_total_length(void)
|
||||
#endif
|
||||
#if IS_ENABLED(CONFIG_MPTCP)
|
||||
skb_ext_type_len[SKB_EXT_MPTCP] +
|
||||
#endif
|
||||
#if IS_ENABLED(CONFIG_KCOV)
|
||||
skb_ext_type_len[SKB_EXT_KCOV_HANDLE] +
|
||||
#endif
|
||||
0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user