From a992ec0b06bfddc4e8c2a50d79362b3dfb286dd5 Mon Sep 17 00:00:00 2001 From: Jesse Gross Date: Mon, 7 Feb 2011 13:05:34 -0800 Subject: [PATCH] tunneling: Check refcount of each page in frags. We check the refcount of each page in a fragmented skb to see if we need to do a linearize before computing the checksum. However, although we iterate over the list of pages, we always check the first one. Reported-by: Ben Pfaff Signed-off-by: Jesse Gross Acked-by: Ben Pfaff --- datapath/tunnel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datapath/tunnel.c b/datapath/tunnel.c index 40577fbd..95492f76 100644 --- a/datapath/tunnel.c +++ b/datapath/tunnel.c @@ -1021,7 +1021,7 @@ static inline bool need_linearize(const struct sk_buff *skb) * change them from underneath us and we can skip the linearization. */ for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) - if (unlikely(page_count(skb_shinfo(skb)->frags[0].page) > 1)) + if (unlikely(page_count(skb_shinfo(skb)->frags[i].page) > 1)) return true; return false; -- 2.30.2