On Wed, Jan 24, 2018 at 7:39 AM, Christian König <[email protected]> wrote: > The vm pointer can become invalid as soon as the lock is released. > > Signed-off-by: Christian König <[email protected]>
Acked-by: Alex Deucher <[email protected]> > --- > 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 > [email protected] > https://lists.freedesktop.org/mailman/listinfo/amd-gfx _______________________________________________ amd-gfx mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/amd-gfx
