From a992ec0b06bfddc4e8c2a50d79362b3dfb286dd5 Mon Sep 17 00:00:00 2001
From: Jesse Gross <jesse@nicira.com>
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 <blp@nicira.com>
Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
---
 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