Commit d0b5c01b authored by Shiraz Saleem's avatar Shiraz Saleem Committed by Jason Gunthorpe

RDMA/umem: Use correct value for SG entries in sg_copy_to_buffer()

With page combining, the assumption that number of SG entries in umem SGL
equal to number of system pages in umem no longer holds.

umem->sg_nents tracks the SG entries in umem SGL. Use it in
sg_pcopy_to_buffer() as opposed to ib_umem_num_pages(umem).

Fixes: d10bcf94 ("RDMA/umem: Combine contiguous PAGE_SIZE regions in SGEs")
Reported-by: default avatarJason Gunthorpe <jgg@mellanox.com>
Signed-off-by: default avatarShiraz Saleem <shiraz.saleem@intel.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent e1c9a0dc
...@@ -381,8 +381,8 @@ int ib_umem_copy_from(void *dst, struct ib_umem *umem, size_t offset, ...@@ -381,8 +381,8 @@ int ib_umem_copy_from(void *dst, struct ib_umem *umem, size_t offset,
return -EINVAL; return -EINVAL;
} }
ret = sg_pcopy_to_buffer(umem->sg_head.sgl, ib_umem_num_pages(umem), ret = sg_pcopy_to_buffer(umem->sg_head.sgl, umem->sg_nents, dst, length,
dst, length, offset + ib_umem_offset(umem)); offset + ib_umem_offset(umem));
if (ret < 0) if (ret < 0)
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment