On Fri, Jul 9, 2021 at 8:38 AM Christian König <ckoenig.leichtzumerken@xxxxxxxxx> wrote: > > > > Am 08.07.21 um 21:36 schrieb Alex Deucher: > > From: Felix Kuehling <Felix.Kuehling@xxxxxxx> > > > > KFD Thunk maps invisible VRAM BOs with PROT_NONE, MAP_PRIVATE. > > is_cow_mapping returns true for these mappings. Add a check for > > vm_flags & VM_WRITE to avoid mmap failures on private read-only or > > PROT_NONE mappings. > > I'm pretty sure that this is not working as expected. > > > > > Fixes: f91142c62161 ("drm/ttm: nuke VM_MIXEDMAP on BO mappings v3") > > Signed-off-by: Felix Kuehling <Felix.Kuehling@xxxxxxx> > > Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx> > > --- > > drivers/gpu/drm/ttm/ttm_bo_vm.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c > > index f56be5bc0861..a75e90c7d4aa 100644 > > --- a/drivers/gpu/drm/ttm/ttm_bo_vm.c > > +++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c > > @@ -552,7 +552,7 @@ static const struct vm_operations_struct ttm_bo_vm_ops = { > > int ttm_bo_mmap_obj(struct vm_area_struct *vma, struct ttm_buffer_object *bo) > > { > > /* Enforce no COW since would have really strange behavior with it. */ > > - if (is_cow_mapping(vma->vm_flags)) > > + if (is_cow_mapping(vma->vm_flags) && (vma->vm_flags & VM_WRITE)) > > is_cow_mapping() already checks for VM_MAYWRITE, so this here shouldn't > be necessary. MAYWRITE != WRITE But then you need to make sure you do catch mprotect() calls to catch the cow, and I'm not sure that's even possible. Otherwise it'll go boom again on the page refcount. -Daniel > > Christian. > > > return -EINVAL; > > > > ttm_bo_get(bo); > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch