]> Pileus Git - ~andy/linux/blobdiff - drivers/net/macvtap.c
macvtap: fix recovery from gup errors
[~andy/linux] / drivers / net / macvtap.c
index 59e9605de316809a702951a5c6de3dbee3a43a69..b6dd6a75919a69216964b2743ff14c60de460e20 100644 (file)
@@ -524,8 +524,10 @@ static int zerocopy_sg_from_iovec(struct sk_buff *skb, const struct iovec *from,
                        return -EMSGSIZE;
                num_pages = get_user_pages_fast(base, size, 0, &page[i]);
                if (num_pages != size) {
-                       for (i = 0; i < num_pages; i++)
-                               put_page(page[i]);
+                       int j;
+
+                       for (j = 0; j < num_pages; j++)
+                               put_page(page[i + j]);
                        return -EFAULT;
                }
                truesize = size * PAGE_SIZE;