Re: [PATCH rdma-next] RDMA/i40w: Hold read semaphore while looking after VMA

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Jul 01, 2018 at 07:36:24PM +0300, Leon Romanovsky wrote:
> From: Leon Romanovsky <leonro@xxxxxxxxxxxx>
> 
> VMA lookup is supposed to be performed while mmap_sem is held.
> 
> Fixes: f26c7c83395b ("i40iw: Add 2MB page support")
> Signed-off-by: Leon Romanovsky <leonro@xxxxxxxxxxxx>
> ---
>  drivers/infiniband/hw/i40iw/i40iw_verbs.c | 2 ++
>  1 file changed, 2 insertions(+)

As discussed, this entire approach in the driver is wrong, but we may
as well have right locking until it gets fixed :(

Applied to for-next

Thanks,
Jason

> diff --git a/drivers/infiniband/hw/i40iw/i40iw_verbs.c b/drivers/infiniband/hw/i40iw/i40iw_verbs.c
> index 8884ff71a634..7d85414742ff 100644
> --- a/drivers/infiniband/hw/i40iw/i40iw_verbs.c
> +++ b/drivers/infiniband/hw/i40iw/i40iw_verbs.c
> @@ -1410,6 +1410,7 @@ static void i40iw_set_hugetlb_values(u64 addr, struct i40iw_mr *iwmr)
>  	struct vm_area_struct *vma;
>  	struct hstate *h;
> 
> +	down_read(&current->mm->mmap_sem);
>  	vma = find_vma(current->mm, addr);
>  	if (vma && is_vm_hugetlb_page(vma)) {
>  		h = hstate_vma(vma);
> @@ -1418,6 +1419,7 @@ static void i40iw_set_hugetlb_values(u64 addr, struct i40iw_mr *iwmr)
>  			iwmr->page_msk = huge_page_mask(h);
>  		}
>  	}
> +	up_read(&current->mm->mmap_sem);
>  }
> 
>  /**
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux