The previous Kconfig patch led to some other build errors as reported by the 0day bot and my own overnight build testing. These are all in <linux/skbuff.h> when KCOV is enabled but SKB_EXTENSIONS is not enabled, so fix those by combining those conditions in the header file. Also, add stubs for skb_ext_add() and skb_ext_find() to reduce the amount of ifdef-ery. (Jakub) Fixes: 6370cc3bbd8a ("net: add kcov handle to skb extensions") Fixes: 85ce50d337d1 ("net: kcov: don't select SKB_EXTENSIONS when there is no NET") Signed-off-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx> Reported-by: kernel test robot <lkp@xxxxxxxxx> Cc: Aleksandr Nogikh <nogikh@xxxxxxxxxx> Cc: Willem de Bruijn <willemb@xxxxxxxxxx> Cc: Jakub Kicinski <kuba@xxxxxxxxxx> Cc: linux-next@xxxxxxxxxxxxxxx Cc: netdev@xxxxxxxxxxxxxxx Cc: Matthieu Baerts <matthieu.baerts@xxxxxxxxxxxx> --- v4: The enum for SKB_EXT_KCOV_HANDLE needs to be exposed unconditionally because it is used in skb_get/set_kcov_handle(), which are always present since v3. v3: (as suggested by Jakub Kicinski <kuba@xxxxxxxxxx>) add stubs for skb_ext_add() and skb_ext_find() to reduce the ifdef-ery v2: (as suggested by Matthieu Baerts <matthieu.baerts@xxxxxxxxxxxx>) drop an extraneous space in a comment; use CONFIG_SKB_EXTENSIONS instead of CONFIG_NET; include/linux/skbuff.h | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) --- linux-next-20201113.orig/include/linux/skbuff.h +++ linux-next-20201113/include/linux/skbuff.h @@ -4137,7 +4137,6 @@ static inline void skb_set_nfct(struct s #endif } -#ifdef CONFIG_SKB_EXTENSIONS enum skb_ext_id { #if IS_ENABLED(CONFIG_BRIDGE_NETFILTER) SKB_EXT_BRIDGE_NF, @@ -4151,12 +4150,11 @@ enum skb_ext_id { #if IS_ENABLED(CONFIG_MPTCP) SKB_EXT_MPTCP, #endif -#if IS_ENABLED(CONFIG_KCOV) SKB_EXT_KCOV_HANDLE, -#endif SKB_EXT_NUM, /* must be last */ }; +#ifdef CONFIG_SKB_EXTENSIONS /** * struct skb_ext - sk_buff extensions * @refcnt: 1 on allocation, deallocated on 0 @@ -4252,6 +4250,10 @@ static inline void skb_ext_del(struct sk static inline void __skb_ext_copy(struct sk_buff *d, const struct sk_buff *s) {} static inline void skb_ext_copy(struct sk_buff *dst, const struct sk_buff *s) {} static inline bool skb_has_extensions(struct sk_buff *skb) { return false; } +static inline void *skb_ext_add(struct sk_buff *skb, enum skb_ext_id id) +{ return NULL; } +static inline void *skb_ext_find(const struct sk_buff *skb, enum skb_ext_id id) +{ return NULL; } #endif /* CONFIG_SKB_EXTENSIONS */ static inline void nf_reset_ct(struct sk_buff *skb) @@ -4608,7 +4610,6 @@ static inline void skb_reset_redirect(st #endif } -#ifdef CONFIG_KCOV static inline void skb_set_kcov_handle(struct sk_buff *skb, const u64 kcov_handle) { @@ -4632,11 +4633,6 @@ static inline u64 skb_get_kcov_handle(st return kcov_handle ? *kcov_handle : 0; } -#else -static inline void skb_set_kcov_handle(struct sk_buff *skb, - const u64 kcov_handle) { } -static inline u64 skb_get_kcov_handle(struct sk_buff *skb) { return 0; } -#endif /* CONFIG_KCOV */ #endif /* __KERNEL__ */ #endif /* _LINUX_SKBUFF_H */