All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Christian König" <ckoenig.leichtzumerken@gmail.com>
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 2/2] drm/sched: document the RCU dependency
Date: Wed, 09 Sep 2026 13:29:10 +0000	[thread overview]
Message-ID: <20260909132911.200651F00A3A@smtp.kernel.org> (raw)
In-Reply-To: <20260909131808.2201-3-christian.koenig@amd.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:

Pre-existing issues:
- [High] Missing RCU grace period before freeing the drm_gpu_scheduler leads to Use-After-Free.
--

commit 11a9a68f368e39faaeb53298fa915ab4e38a08eb
Author: Christian König <ckoenig.leichtzumerken@gmail.com>

drm/sched: document the RCU dependency

This commit adds documentation to drm_sched_fini() noting that an RCU grace
period is necessary between signaling the last scheduler fence and tearing
down the scheduler. It clarifies the consequences of adding RCU protection
to the returned strings from dma_fence backends.

> diff --git a/drivers/gpu/drm/scheduler/sched_main.c b/drivers/gpu/drm/scheduler/sched_main.c
> index 6cb6f95464938..22103cb077824 100644
> --- a/drivers/gpu/drm/scheduler/sched_main.c
> +++ b/drivers/gpu/drm/scheduler/sched_main.c
> @@ -1203,6 +1203,10 @@ static void drm_sched_cancel_remaining_jobs(struct drm_gpu_scheduler *sched)
>   * is implemented, all jobs will be canceled through it and afterwards cleaned
>   * up through &struct drm_sched_backend_ops.free_job. If cancel_job is not
>   * implemented, memory could leak.
> + *
> + * The scheduler fences timeline name is returned protected by the signaled
> + * status and RCU, so an RCU grace period is necessary between signaling the
> + * last scheduler fence and tearing down the scheduler who originated it.
>   */
>  void drm_sched_fini(struct drm_gpu_scheduler *sched)
>  {

[Severity: High]
This isn't a bug introduced by this patch, but since we are documenting the
RCU grace period requirement here, does drm_sched_fini() or its callers
actually enforce this grace period?

Looking at several drivers, the scheduler memory is freed synchronously
immediately after calling drm_sched_fini() without an intervening
synchronize_rcu(). For example, in panthor_vm_destroy()
(drivers/gpu/drm/panthor/panthor_mmu.c):

    drm_sched_entity_destroy(&vm->entity);
    drm_sched_fini(&vm->sched);
    /* ... */
    kfree(vm);

Similarly, in aie2_hwctx_fini() (drivers/accel/amdxdna/aie2_ctx.c) and
msm_gem_vm_close() (drivers/gpu/drm/msm/msm_gem_vma.c), the scheduler
memory is freed synchronously after calling drm_sched_fini().

Since unprivileged userspace can control the creation and destruction of
VMs and contexts via standard driver ioctls, could this lead to a
use-after-free? Concurrently, the RCU read-side critical section in
dma_fence_get_timeline_name() can access the freed scheduler pointer
(fence->sched->name). Should synchronize_rcu() be added, or the free
deferred using kfree_rcu(), to prevent this UAF?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260909131808.2201-1-christian.koenig@amd.com?part=2

  reply	other threads:[~2026-09-09 13:29 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-09 13:14 Fix dma_fence use after free regression Christian König
2026-09-09 13:14 ` [PATCH 1/2] dma-buf/dma-fence: fix checking signaling bit for timeline and driver name Christian König
2026-09-09 13:58   ` Philipp Stanner
2026-09-09 13:14 ` [PATCH 2/2] drm/sched: document the RCU dependency Christian König
2026-09-09 13:29   ` sashiko-bot [this message]
2026-09-09 13:55   ` Philipp Stanner
2026-09-09 13:57     ` Christian König

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260909132911.200651F00A3A@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=ckoenig.leichtzumerken@gmail.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.