[Public] > -----Original Message----- > From: Koenig, Christian <[email protected]> > Sent: Friday, July 11, 2025 8:14 PM > To: Liang, Prike <[email protected]>; [email protected] > Cc: Deucher, Alexander <[email protected]> > Subject: Re: [PATCH v6 09/11] drm/amdgpu: validate the shared bo for tracking > usage size > > On 11.07.25 11:39, Prike Liang wrote: > > It requires validating the shared BO before updating its usage size; > > otherwise, there is a potential NULL pointer error when the BO > > released improperly. > > Clear NAK to that. You are obviously working around a bug elsewhere. Yes, this is a workaround for the userq PT deference imbalance issue and will drop that.
> Regards, > Christian. > > > > > Signed-off-by: Prike Liang <[email protected]> > > --- > > drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 25 +++++++++++++++++++++---- > > 1 file changed, 21 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > > b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > > index f042372d9f2e..a574effdd3ec 100644 > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c > > @@ -321,12 +321,26 @@ static void amdgpu_vm_bo_reset_state_machine(struct > amdgpu_vm *vm) > > */ > > static void amdgpu_vm_update_shared(struct amdgpu_vm_bo_base *base) > > { > > - struct amdgpu_vm *vm = base->vm; > > - struct amdgpu_bo *bo = base->bo; > > - uint64_t size = amdgpu_bo_size(bo); > > - uint32_t bo_memtype = amdgpu_bo_mem_stats_placement(bo); > > + struct amdgpu_vm *vm; > > + struct amdgpu_bo *bo; > > + uint64_t size = 0; > > + uint32_t bo_memtype = TTM_PL_SYSTEM; > > bool shared; > > > > + if (likely(base)) { > > + vm = base->vm; > > + bo = base->bo; > > + } else { > > + return; > > + } > > + > > + if (likely(bo)) { > > + size = amdgpu_bo_size(bo); > > + bo_memtype = amdgpu_bo_mem_stats_placement(bo); > > + } else { > > + return; > > + } > > + > > spin_lock(&vm->status_lock); > > shared = drm_gem_object_is_shared_for_memory_stats(&bo->tbo.base); > > if (base->shared != shared) { > > @@ -353,6 +367,9 @@ void amdgpu_vm_bo_update_shared(struct amdgpu_bo > > *bo) { > > struct amdgpu_vm_bo_base *base; > > > > + if (unlikely(!bo)) > > + return; > > + > > for (base = bo->vm_bo; base; base = base->next) > > amdgpu_vm_update_shared(base); > > }
