From: Boris Brezillon <boris.brezillon@collabora.com>
To: Akash Goel <akash.goel@arm.com>
Cc: liviu.dudau@arm.com, steven.price@arm.com,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
maarten.lankhorst@linux.intel.com, mripard@kernel.org,
tzimmermann@suse.de, airlied@gmail.com, daniel@ffwll.ch,
nd@arm.com
Subject: Re: [PATCH] drm/panthor: Avoid potential UAF due to memory reclaim
Date: Mon, 13 Apr 2026 09:39:19 +0200 [thread overview]
Message-ID: <20260413093753.4e67fb6e@fedora> (raw)
In-Reply-To: <20260410195050.687201-1-akash.goel@arm.com>
On Fri, 10 Apr 2026 20:50:50 +0100
Akash Goel <akash.goel@arm.com> wrote:
> Recent changes to add shrinker support introduced a use after free
> vulnerability.
> When a BO is evicted from the shrinker callback, all its CPU and GPU
> mappings are invalidated. It can happen that another GPU mapping is
> created for the BO after the eviction. Because of the new GPU mapping,
> BO will be added back to one of the reclaim list but the state of
> corresponding vm_bo will not be changed.
> If vm_bo remains in evicted state and shrinker callback is invoked
> again then the new GPU mapping won't be invalidated. As a result the
> backing pages, which were acquired on the creation of new GPU mapping,
> can get reclaimed and reused whilst they are still mapped to the GPU.
>
> To prevent the use after free possibility, this commit removes the
> evicted check for vm_bo so that all GPU mappings are checked for
> invalidation.
>
> Fixes: fb42964e2a76 ("drm/panthor: Add a GEM shrinker")
> Suggested-by: Boris Brezillon <boris.brezillon@collabora.com>
> Signed-off-by: Akash Goel <akash.goel@arm.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
A couple nits below.
> ---
> drivers/gpu/drm/panthor/panthor_mmu.c | 15 ++++++++++-----
> 1 file changed, 10 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/panthor/panthor_mmu.c
> index fa8b31df85c9..8d0dfa93c45c 100644
> --- a/drivers/gpu/drm/panthor/panthor_mmu.c
> +++ b/drivers/gpu/drm/panthor/panthor_mmu.c
> @@ -2350,14 +2350,19 @@ int panthor_vm_evict_bo_mappings_locked(struct panthor_gem_object *bo)
> struct panthor_vm *vm = container_of(vm_bo->vm, struct panthor_vm, base);
> struct drm_gpuva *va;
>
> - /* Skip already evicted GPU mappings. */
> - if (vm_bo->evicted)
> - continue;
> -
> if (!mutex_trylock(&vm->op_lock))
> return -EDEADLK;
>
> - drm_gpuvm_bo_evict(vm_bo, true);
> + /* It can be that the vm_bo was already evicted, but a new
evicted but a ...
> + * mapping pointing to this BO got created in the meantime,
> + * turning the vm_bo in partially evicted state. In that case
thus turning the vm_bo in a partially evicted state.
> + * we don't call drm_gpuvm_bo_evict() again because this would
> + * mess up with the internal gpuvm lists, but we do walk the
> + * VAs on this vm_bo to make sure the non-evicted ones are
> + * torn down.
> + */
> + if (!vm_bo->evicted)
> + drm_gpuvm_bo_evict(vm_bo, true);
Can we add a blank line here?
> drm_gpuvm_bo_for_each_va(va, vm_bo) {
> struct panthor_vma *vma = container_of(va, struct panthor_vma, base);
>
next prev parent reply other threads:[~2026-04-13 7:39 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-10 19:50 [PATCH] drm/panthor: Avoid potential UAF due to memory reclaim Akash Goel
2026-04-13 7:39 ` Boris Brezillon [this message]
2026-04-13 14:52 ` Liviu Dudau
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=20260413093753.4e67fb6e@fedora \
--to=boris.brezillon@collabora.com \
--cc=airlied@gmail.com \
--cc=akash.goel@arm.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=liviu.dudau@arm.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=nd@arm.com \
--cc=steven.price@arm.com \
--cc=tzimmermann@suse.de \
/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.