diff options
| -rw-r--r-- | drivers/infiniband/core/umem_odp.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/infiniband/core/umem_odp.c b/drivers/infiniband/core/umem_odp.c index 577f1b12bff4..e6ec79ad9cc8 100644 --- a/drivers/infiniband/core/umem_odp.c +++ b/drivers/infiniband/core/umem_odp.c | |||
| @@ -687,10 +687,13 @@ int ib_umem_odp_map_dma_pages(struct ib_umem_odp *umem_odp, u64 user_virt, | |||
| 687 | 687 | ||
| 688 | if (ret < 0) { | 688 | if (ret < 0) { |
| 689 | /* | 689 | /* |
| 690 | * Release pages, starting at the the first page | 690 | * Release pages, remembering that the first page |
| 691 | * that experienced an error. | 691 | * to hit an error was already released by |
| 692 | * ib_umem_odp_map_dma_single_page(). | ||
| 692 | */ | 693 | */ |
| 693 | release_pages(&local_page_list[j], npages - j); | 694 | if (npages - (j + 1) > 0) |
| 695 | release_pages(&local_page_list[j+1], | ||
| 696 | npages - (j + 1)); | ||
| 694 | break; | 697 | break; |
| 695 | } | 698 | } |
| 696 | } | 699 | } |
