]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdkfd: fix kernel crash on releasing NULL sysfs entry
authorEric Huang <jinhuieric.huang@amd.com>
Fri, 27 Mar 2026 13:46:42 +0000 (09:46 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 30 Mar 2026 19:14:51 +0000 (15:14 -0400)
there is an abnormal case that When a process re-opens kfd
with different mm_struct(execve() called by user), the
allocated p->kobj will be freed, but missed setting it to NULL,
that will cause sysfs/kernel crash with NULL pointers in p->kobj
on kfd_process_remove_sysfs() when releasing process, and the
similar error on kfd_procfs_del_queue() as well.

Signed-off-by: Eric Huang <jinhuieric.huang@amd.com>
Reviewed-by: Kent Russell <kent.russell@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdkfd/kfd_process.c

index a031166f270c8100f253fb35bbadd1fcf293f831..bcd21204aa506ef0e648bfd45b54fb49f3126452 100644 (file)
@@ -679,7 +679,7 @@ static void kfd_procfs_add_sysfs_files(struct kfd_process *p)
 
 void kfd_procfs_del_queue(struct queue *q)
 {
-       if (!q)
+       if (!q || !q->process->kobj)
                return;
 
        kobject_del(&q->kobj);
@@ -858,6 +858,7 @@ int kfd_create_process_sysfs(struct kfd_process *process)
        if (ret) {
                pr_warn("Creating procfs pid directory failed");
                kobject_put(process->kobj);
+               process->kobj = NULL;
                return ret;
        }