From: Eric Dumazet <edumazet@google.com> Date: Thu, 2 Jun 2022 16:18:58 +0000 (-0700) Subject: net: add debug info to __skb_pull() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=22296a5c0cd35aaf62e1af3266f82cdf6b0b9b78;p=linux.git net: add debug info to __skb_pull() While analyzing yet another syzbot report, I found the following patch very useful. It allows to better understand what went wrong. This debug info is only enabled if CONFIG_DEBUG_NET=y, which is the case for syzbot builds. Signed-off-by: Eric Dumazet <edumazet@google.com> Acked-by: Willem de Bruijn <willemb@google.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index da96f0d3e753f..d3d10556f0fae 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -2696,7 +2696,14 @@ void *skb_pull(struct sk_buff *skb, unsigned int len); static inline void *__skb_pull(struct sk_buff *skb, unsigned int len) { skb->len -= len; - BUG_ON(skb->len < skb->data_len); + if (unlikely(skb->len < skb->data_len)) { +#if defined(CONFIG_DEBUG_NET) + skb->len += len; + pr_err("__skb_pull(len=%u)\n", len); + skb_dump(KERN_ERR, skb, false); +#endif + BUG(); + } return skb->data += len; }