net: switch to storing KCOV handle directly in sk_buff
authorMarco Elver <elver@google.com>
Wed, 25 Nov 2020 22:48:40 +0000 (23:48 +0100)
committerJakub Kicinski <kuba@kernel.org>
Tue, 1 Dec 2020 19:26:19 +0000 (11:26 -0800)
commitfa69ee5aa48b5b52e8028c2eb486906e9998d081
tree3a93e691ed484fd22681f316ca1cb54719a112d9
parent0fca55ed988a694f5896f36de2a8f18715a78279
net: switch to storing KCOV handle directly in sk_buff

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>
include/linux/skbuff.h
lib/Kconfig.debug
net/core/skbuff.c