mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 02:32:09 -04:00
RDMA/odp: Check for overflow when computing the umem_odp end
Since the page size can be extended in the ODP case by IB_ACCESS_HUGETLB the existing overflow checks done by ib_umem_get() are not sufficient. Check for overflow again. Further, remove the unchecked math from the inlines and just use the precomputed value stored in the interval_tree_node. Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Leon Romanovsky <[email protected]> Signed-off-by: Jason Gunthorpe <[email protected]>
This commit is contained in:
parent
0446cad9ca
commit
204e3e5630
2 changed files with 21 additions and 9 deletions
|
|
@ -91,14 +91,13 @@ static inline struct ib_umem_odp *to_ib_umem_odp(struct ib_umem *umem)
|
|||
/* Returns the first page of an ODP umem. */
|
||||
static inline unsigned long ib_umem_start(struct ib_umem_odp *umem_odp)
|
||||
{
|
||||
return ALIGN_DOWN(umem_odp->umem.address, 1UL << umem_odp->page_shift);
|
||||
return umem_odp->interval_tree.start;
|
||||
}
|
||||
|
||||
/* Returns the address of the page after the last one of an ODP umem. */
|
||||
static inline unsigned long ib_umem_end(struct ib_umem_odp *umem_odp)
|
||||
{
|
||||
return ALIGN(umem_odp->umem.address + umem_odp->umem.length,
|
||||
1UL << umem_odp->page_shift);
|
||||
return umem_odp->interval_tree.last + 1;
|
||||
}
|
||||
|
||||
static inline size_t ib_umem_odp_num_pages(struct ib_umem_odp *umem_odp)
|
||||
|
|
|
|||
Loading…
Reference in a new issue