crypto, cifs: fix error handling in extract_iter_to_sg()
[linux-2.6-microblaze.git] / lib / scatterlist.c
index e97d706..c65566b 100644 (file)
@@ -1148,7 +1148,7 @@ static ssize_t extract_user_to_sg(struct iov_iter *iter,
 
 failed:
        while (sgtable->nents > sgtable->orig_nents)
-               put_page(sg_page(&sgtable->sgl[--sgtable->nents]));
+               unpin_user_page(sg_page(&sgtable->sgl[--sgtable->nents]));
        return res;
 }
 
@@ -1237,7 +1237,7 @@ static ssize_t extract_kvec_to_sg(struct iov_iter *iter,
                        if (is_vmalloc_or_module_addr((void *)kaddr))
                                page = vmalloc_to_page((void *)kaddr);
                        else
-                               page = virt_to_page(kaddr);
+                               page = virt_to_page((void *)kaddr);
 
                        sg_set_page(sg, page, len, off);
                        sgtable->nents++;