On Wed, Jan 24, 2018 at 7:39 AM, Christian König <ckoenig.leichtzumerken at gmail.com> wrote: > The vm pointer can become invalid as soon as the lock is released. > > Signed-off-by: Christian König <christian.koenig at amd.com> Acked-by: Alex Deucher <alexander.deucher at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/vega10_ih.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/vega10_ih.c b/drivers/gpu/drm/amd/amdgpu/vega10_ih.c > index 926c2d305c33..9589e0a2f14a 100644 > --- a/drivers/gpu/drm/amd/amdgpu/vega10_ih.c > +++ b/drivers/gpu/drm/amd/amdgpu/vega10_ih.c > @@ -278,9 +278,9 @@ static bool vega10_ih_prescreen_iv(struct amdgpu_device *adev) > /* Track retry faults in per-VM fault FIFO. */ > spin_lock(&adev->vm_manager.pasid_lock); > vm = idr_find(&adev->vm_manager.pasid_idr, pasid); > - spin_unlock(&adev->vm_manager.pasid_lock); > if (WARN_ON_ONCE(!vm)) { > /* VM not found, process it normally */ > + spin_unlock(&adev->vm_manager.pasid_lock); > amdgpu_ih_clear_fault(adev, key); > return true; > } > @@ -288,9 +288,11 @@ static bool vega10_ih_prescreen_iv(struct amdgpu_device *adev) > r = kfifo_put(&vm->faults, key); > if (!r) { > /* FIFO is full. Ignore it until there is space */ > + spin_unlock(&adev->vm_manager.pasid_lock); > amdgpu_ih_clear_fault(adev, key); > goto ignore_iv; > } > + spin_unlock(&adev->vm_manager.pasid_lock); > > /* It's the first fault for this address, process it normally */ > return true; > -- > 2.14.1 > > _______________________________________________ > amd-gfx mailing list > amd-gfx at lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/amd-gfx