On 10/18/2025 7:32 AM, Felix Kuehling wrote:
> On 2025-10-17 04:42, Zhu Lingshan wrote:
>> Set_debug_trap ioctl should work on a specific kfd_process
>> even when multiple contexts feature is implemented.
>>
>> For consistency, this commit allow set_debug_trap ioctl only work on the
>> primary kfd process of a user space program
>>
>> Signed-off-by: Zhu Lingshan <[email protected]>
>> ---
>> drivers/gpu/drm/amd/amdkfd/kfd_chardev.c | 6 ++++++
>> 1 file changed, 6 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
>> b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
>> index 73de2de8be0f..7c02e8473622 100644
>> --- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
>> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
>> @@ -2964,6 +2964,12 @@ static int kfd_ioctl_set_debug_trap(struct
>> file *filep, struct kfd_process *p, v
>> target = kfd_lookup_process_by_pid(pid);
>> }
>> + if (target->context_id != KFD_CONTEXT_ID_PRIMARY) {
>> + pr_debug("Set debug trap ioctl not supported on non-primary
>> kfd process\n");
>> + r = -EOPNOTSUPP;
>> + goto out;
>> + }
>> +
>
> This check should be after the IS_ERR_OR_NULL(target) check below.
> Otherwise you dereference a bogus pointer.
>
> We should also check that the process calling the ioctl is a primary
> context (p->context_id == KFD_CONTEXT_ID_PRIMARY). You don't want to
> allow a guest process (using a secondary context) to debug another
> process running on the host, using any ptrace the privileges of the
> QEMU host process.
will fix, thanks!
>
> Regards,
> Felix
>
>
>> if (IS_ERR_OR_NULL(target)) {
>> pr_debug("Cannot find process PID %i to debug\n", args->pid);
>> r = target ? PTR_ERR(target) : -ESRCH;