All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jean-Philippe Brucker <jpb@kernel.org>
To: sashiko-reviews@lists.linux.dev
Cc: Ryan Roberts <ryan.roberts@arm.com>, dri-devel@lists.freedesktop.org
Subject: Re: [RFC PATCH v1 7/8] misc/arm-cla: Manage domain contexts
Date: Wed, 30 Sep 2026 12:57:19 +0100	[thread overview]
Message-ID: <20260930115719.GG480985@myrica> (raw)
In-Reply-To: <20260717110114.780F01F00A3D@smtp.kernel.org>

On Fri, Jul 17, 2026 at 11:01:14AM +0000, sashiko-bot@kernel.org wrote:
> > +	worker = kthread_run_worker_on_cpu(cpu, 0, "cla-dev-worker/%u");
> 
> [Severity: Medium]
> Is it possible this leaks uninitialized memory to user-space? The string
> "cla-dev-worker/%u" expects an integer argument, but the wrapper macro
> kthread_run_worker_on_cpu() only takes the name format and does not forward
> arguments to the underlying kthread_create_worker_on_cpu() function.

kthread_create_worker_on_cpu() adds the cpu number


> [Severity: High]
> When a CPU is hotplugged back online, will this setup path leave the hardware
> out of sync with the domain?

Yes save/restore on CPUHP will be added later


> > +	for (i = 0; i < domain->nr_devs; i++) {
> > +		dev = domain->devs[i];
> > +		call = &dev->call;
> > +
> > +		call->sched.prev_ctx = prev_ctx;
> > +		call->sched.next_ctx = next_ctx;
> > +		call->sched.ctx_id = i;
> > +		call->ret = 0;
> > +
> > +		mutex_lock(&dev->lock);
> > +		if (dev->worker && !dev->broken)
> > +			kthread_queue_work(dev->worker, &call->switch_ctx);
> > +		mutex_unlock(&dev->lock);
> 
> [Severity: High]
> If dev->worker is NULL because the CPU is offline, does this silently bypass
> the context switch for that device? 

Context cannot be switched on an offline CPU


> > +static void cla_domain_zap(struct cla_domain *domain, struct cla_ctx *ctx)
> > +{
> > +	struct vm_area_struct *vma;
> > +	struct vma_iterator vmi;
> > +
> > +	/*
> > +	 * If the context is dying it has already been unmapped, no need to zap
> > +	 * it here.
> > +	 */
> > +	if (!ctx || cla_ctx_is_dying(ctx))
> > +		return;
> > +
> > +	/*
> > +	 * Iterate over vmas in prev_ctx's mm, looking for vmas that map
> > +	 * prev_ctx's file. Zap any portions of those vmas that map the domain.
> > +	 */
> > +	mmap_read_lock(ctx->key.mm);
> > +	vma_iter_init(&vmi, ctx->key.mm, 0);
> > +	for_each_vma(vmi, vma) {
> 
> [Severity: High]
> Is it safe to acquire the mmap_read_lock() and iterate the maple tree here
> without an active mm reference?
> 
> The context only holds a passive mmgrab() reference. If a concurrent
> unprivileged userspace process exits, mm_users could drop to 0, and
> exit_mmap() might tear down the VMA maple tree. Should this code use
> mmget_not_zero() to prevent a use-after-free while walking the tree?

Yes probably


> > +static void cla_domain_reclaim(struct kthread_work *work)
> > +{
> > +	struct cla_domain *domain;
> > +	struct cla_ctx *ctx, *next;
> > +
> > +	domain = container_of(work, struct cla_domain, reclaim.work);
> > +
> > +	mutex_lock(&domain->lock);
> > +	list_for_each_entry_safe(ctx, next, &domain->dying_ctxs, queue_node) {
> > +		list_del_init(&ctx->queue_node);
> > +		WARN_ON(domain->assigned_ctx == ctx);
> > +		cla_ctx_put(ctx);
> 
> [Severity: Critical]
> If a domain becomes broken, is it possible for the active hardware context to
> be freed while still programmed in the device?
> 
> In cla_domain_schedule_reassignment(), the reassign work is skipped if the
> domain is broken, meaning the context is never uninstalled from the hardware.
> Then here in cla_domain_reclaim(), the dying context is unconditionally freed
> by calling cla_ctx_put(), which drops the PGD and software state.

No, a reference to the mm is kept


  reply	other threads:[~2026-09-30 11:56 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-17 10:47 [RFC PATCH v1 0/8] Arm Core Local Accelerator Driver Ryan Roberts
2026-07-17 10:47 ` [RFC PATCH v1 1/8] misc/arm-cla: Add driver skeleton and documentation Ryan Roberts
2026-07-17 10:56   ` sashiko-bot
2026-09-30 11:51     ` Jean-Philippe Brucker
2026-07-17 13:49   ` Arnd Bergmann
2026-07-17 15:44     ` Ryan Roberts
2026-07-17 16:10       ` Arnd Bergmann
2026-07-20  9:54         ` Ryan Roberts
2026-07-17 10:47 ` [RFC PATCH v1 2/8] misc/arm-cla: Add launch operation helpers Ryan Roberts
2026-07-17 11:01   ` sashiko-bot
2026-09-30 11:52     ` Jean-Philippe Brucker
2026-07-17 12:16   ` Arnd Bergmann
2026-08-04 11:03     ` Jean-Philippe Brucker
2026-07-17 10:47 ` [RFC PATCH v1 3/8] misc/arm-cla: Probe firmware-described devices Ryan Roberts
2026-07-17 10:57   ` sashiko-bot
2026-09-30 11:53     ` Jean-Philippe Brucker
2026-07-17 12:25   ` Arnd Bergmann
2026-07-17 12:36     ` Ryan Roberts
2026-07-17 10:47 ` [RFC PATCH v1 4/8] misc/arm-cla: Initialize devices on CPU bringup Ryan Roberts
2026-07-17 10:58   ` sashiko-bot
2026-09-30 11:54     ` Jean-Philippe Brucker
2026-07-17 10:47 ` [RFC PATCH v1 5/8] misc/arm-cla: Accelerator context save and restore Ryan Roberts
2026-07-17 10:58   ` sashiko-bot
2026-09-30 11:55     ` Jean-Philippe Brucker
2026-07-17 10:47 ` [RFC PATCH v1 6/8] misc/arm-cla: Set up memory translation context Ryan Roberts
2026-07-17 11:02   ` sashiko-bot
2026-09-30 11:56     ` Jean-Philippe Brucker
2026-07-17 10:47 ` [RFC PATCH v1 7/8] misc/arm-cla: Manage domain contexts Ryan Roberts
2026-07-17 11:01   ` sashiko-bot
2026-09-30 11:57     ` Jean-Philippe Brucker [this message]
2026-07-17 10:47 ` [RFC PATCH v1 8/8] misc/arm-cla: Add userspace interface Ryan Roberts
2026-07-17 11:10   ` sashiko-bot
2026-09-30 11:58     ` Jean-Philippe Brucker
2026-07-17 12:54   ` Arnd Bergmann
2026-07-17 14:35     ` Ryan Roberts
2026-07-17 15:31       ` Arnd Bergmann
2026-07-17 16:21         ` Ryan Roberts
2026-07-17 20:11           ` Arnd Bergmann
2026-08-19 16:08             ` Ryan Roberts
2026-07-17 11:33 ` [RFC PATCH v1 0/8] Arm Core Local Accelerator Driver Will Deacon
2026-07-17 12:09   ` Marc Zyngier
2026-07-17 12:33     ` Ryan Roberts
2026-07-19  7:47       ` Marc Zyngier
2026-07-17 12:30   ` Ryan Roberts
2026-07-17 13:32   ` Jason Gunthorpe
2026-07-17 13:42     ` Ryan Roberts

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=20260930115719.GG480985@myrica \
    --to=jpb@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=ryan.roberts@arm.com \
    --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.