Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: add truesize debug checks in skb_{add|coalesce}_rx_frag()

It can be time consuming to track driver bugs, that might be detected
too late from this confusing warning in skb_try_coalesce()

WARN_ON_ONCE(delta < len);

Add sanity check in skb_add_rx_frag() and skb_coalesce_rx_frag()
to better track bug origin for CONFIG_DEBUG_NET=y builds.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Eric Dumazet and committed by
David S. Miller
c123e0d3 41862d12

+4
+4
net/core/skbuff.c
··· 847 847 void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, int off, 848 848 int size, unsigned int truesize) 849 849 { 850 + DEBUG_NET_WARN_ON_ONCE(size > truesize); 851 + 850 852 skb_fill_page_desc(skb, i, page, off, size); 851 853 skb->len += size; 852 854 skb->data_len += size; ··· 860 858 unsigned int truesize) 861 859 { 862 860 skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; 861 + 862 + DEBUG_NET_WARN_ON_ONCE(size > truesize); 863 863 864 864 skb_frag_size_add(frag, size); 865 865 skb->len += size;