drm/amdkfd: Add crash protection in debugger register path
After debugger is registered, the pqm_destroy_queue fails because is_debug is true, the queue should not be removed from process_queue_list since the count is not reduced. Test application calls debugger unregister without register debugger, add null pointer check protection to avoid crash for this case Signed-off-by: Philip Yang <Philip.Yang@amd.com> Signed-off-by: Felix Kuehling <Felix.Kuehling@amd.com> Reviewed-by: Oded Gabbay <oded.gabbay@gmail.com> Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
This commit is contained in:
parent
a9efcc1916
commit
3c0b428090
@ -526,7 +526,7 @@ static int kfd_ioctl_dbg_unregister(struct file *filep,
|
||||
long status;
|
||||
|
||||
dev = kfd_device_by_id(args->gpu_id);
|
||||
if (!dev)
|
||||
if (!dev || !dev->dbgmgr)
|
||||
return -EINVAL;
|
||||
|
||||
if (dev->device_info->asic_family == CHIP_CARRIZO) {
|
||||
|
@ -311,6 +311,10 @@ int pqm_destroy_queue(struct process_queue_manager *pqm, unsigned int qid)
|
||||
if (pqn->q) {
|
||||
dqm = pqn->q->device->dqm;
|
||||
retval = dqm->ops.destroy_queue(dqm, &pdd->qpd, pqn->q);
|
||||
if (retval) {
|
||||
pr_debug("Destroy queue failed, returned %d\n", retval);
|
||||
goto err_destroy_queue;
|
||||
}
|
||||
uninit_queue(pqn->q);
|
||||
}
|
||||
|
||||
@ -322,6 +326,7 @@ int pqm_destroy_queue(struct process_queue_manager *pqm, unsigned int qid)
|
||||
list_empty(&pdd->qpd.priv_queue_list))
|
||||
dqm->ops.unregister_process(dqm, &pdd->qpd);
|
||||
|
||||
err_destroy_queue:
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user