From: sashiko-bot@kernel.org
To: "Amirreza Zarrabi" <amirreza.zarrabi@oss.qualcomm.com>
Cc: robh@kernel.org, conor+dt@kernel.org, devicetree@vger.kernel.org
Subject: Re: [PATCH RFC v2 8/8] tee: optee: support RPMI asynchronous notification doorbells
Date: Tue, 06 Oct 2026 00:47:47 +0000 [thread overview]
Message-ID: <20261006004747.BDBD71F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20261005-rpmi-tee-service-grp-dev-v2-8-72f222e23ec1@oss.qualcomm.com>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [High] tee: optee: UAF in optee_rpmi_notif_callback() due to unsynchronized teardown
--
commit 78a8a655d3ae3b299cafbd7aaef4c7ef599402d8
Author: Amirreza Zarrabi <amirreza.zarrabi@oss.qualcomm.com>
tee: optee: support RPMI asynchronous notification doorbells
This commit adds support for RPMI asynchronous notifications in OP-TEE. It
allocates an RPMI signal, sets up a callback to queue a bottom-half on a
private workqueue, and provides initialization and teardown routines.
> diff --git a/drivers/tee/optee/rpmi_abi.c b/drivers/tee/optee/rpmi_abi.c
> index db541f3de4250..ffe44d81e8571 100644
> --- a/drivers/tee/optee/rpmi_abi.c
> +++ b/drivers/tee/optee/rpmi_abi.c
[ ... ]
> +static void optee_rpmi_notif_callback(struct rpmi_tee_device *rdev, u32 signal,
> + void *cb_data)
> +{
> + struct optee *optee = cb_data;
> +
> + queue_work(optee->rpmi.notif_wq, &optee->rpmi.notif_work);
[Severity: High]
Can this callback execute after the optee structure has been freed and the
workqueue destroyed?
If an RPMI notification is dispatched just prior to notify_relinquish(), it
appears this callback could run concurrently with or after the teardown
sequence in optee_rpmi_async_notif_uninit(). This would lead to a
use-after-free on the optee structure and a potential NULL pointer
dereference or crash when passing the destroyed workqueue to queue_work().
> +}
> +
> +/* Relinquish is not a barrier for an already-selected transport callback. */
> +static void optee_rpmi_async_notif_uninit(struct optee *optee)
> +{
> + struct optee_rpmi *rpmi = &optee->rpmi;
> + struct rpmi_tee_device *rdev = rpmi->rdev;
> + int ret;
> +
> + if (!rpmi->notif_wq)
> + return;
> +
> + ret = optee_stop_async_notif(optee->ctx);
> + if (ret)
> + dev_warn(&rdev->dev, "stop notifications failed: %d\n", ret);
> +
> + ret = rdev->ops->notifier_ops->notify_relinquish(rdev, rpmi->signal);
> + if (ret && ret != -EOPNOTSUPP)
> + dev_warn(&rdev->dev,
> + "relinquish notification failed: %d\n", ret);
> +
> + destroy_workqueue(rpmi->notif_wq);
> +
> + rpmi->notif_wq = NULL;
[Severity: High]
Does this teardown sequence need to synchronize with in-flight callbacks
before destroying the workqueue and returning?
Because notify_relinquish() does not wait for already-selected callbacks to
finish, destroying the workqueue here and subsequently freeing the optee
structure in optee_rpmi_remove() could race with an executing callback.
> +}
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261005-rpmi-tee-service-grp-dev-v2-0-72f222e23ec1@oss.qualcomm.com?part=8
next prev parent reply other threads:[~2026-10-06 0:47 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-06 0:39 [PATCH RFC v2 0/8] tee: optee: add RPMI backend support on RISC-V Amirreza Zarrabi
2026-10-06 0:39 ` Amirreza Zarrabi
2026-10-06 0:39 ` Amirreza Zarrabi via OP-TEE
2026-10-06 0:39 ` [PATCH RFC v2 1/8] tee: optee: allow RPMI transport builds " Amirreza Zarrabi
2026-10-06 0:39 ` Amirreza Zarrabi
2026-10-06 0:39 ` Amirreza Zarrabi via OP-TEE
2026-10-06 0:52 ` sashiko-bot
2026-10-06 0:39 ` [PATCH RFC v2 2/8] tee: optee: define the RPMI control and parcel-reference ABI Amirreza Zarrabi
2026-10-06 0:39 ` Amirreza Zarrabi
2026-10-06 0:39 ` Amirreza Zarrabi via OP-TEE
2026-10-08 6:51 ` Jens Wiklander
2026-10-08 6:51 ` Jens Wiklander
2026-10-08 6:51 ` Jens Wiklander via OP-TEE
2026-10-08 22:02 ` Amirreza Zarrabi
2026-10-08 22:02 ` Amirreza Zarrabi via OP-TEE
2026-10-08 22:02 ` Amirreza Zarrabi
2026-10-09 13:54 ` Jens Wiklander
2026-10-09 13:54 ` Jens Wiklander
2026-10-09 13:54 ` Jens Wiklander via OP-TEE
2026-10-06 0:39 ` [PATCH RFC v2 3/8] tee: optee: add RPMI shared-memory and parameter support Amirreza Zarrabi
2026-10-06 0:39 ` Amirreza Zarrabi
2026-10-06 0:39 ` Amirreza Zarrabi via OP-TEE
2026-10-08 7:10 ` Jens Wiklander
2026-10-08 7:10 ` Jens Wiklander
2026-10-08 7:10 ` Jens Wiklander via OP-TEE
2026-10-08 22:27 ` Amirreza Zarrabi
2026-10-08 22:27 ` Amirreza Zarrabi via OP-TEE
2026-10-08 22:27 ` Amirreza Zarrabi
2026-10-06 0:39 ` [PATCH RFC v2 4/8] tee: optee: add RPMI dynamic shared-memory pool Amirreza Zarrabi
2026-10-06 0:39 ` Amirreza Zarrabi
2026-10-06 0:39 ` Amirreza Zarrabi via OP-TEE
2026-10-06 0:55 ` sashiko-bot
2026-10-06 0:39 ` [PATCH RFC v2 5/8] tee: optee: add RPMI RPC handling Amirreza Zarrabi
2026-10-06 0:39 ` Amirreza Zarrabi
2026-10-06 0:39 ` Amirreza Zarrabi via OP-TEE
2026-10-06 0:39 ` [PATCH RFC v2 6/8] tee: optee: execute yielding RPMI calls Amirreza Zarrabi
2026-10-06 0:39 ` Amirreza Zarrabi
2026-10-06 0:39 ` Amirreza Zarrabi via OP-TEE
2026-10-06 0:55 ` sashiko-bot
2026-10-08 8:11 ` Jens Wiklander
2026-10-08 8:11 ` Jens Wiklander
2026-10-08 8:11 ` Jens Wiklander via OP-TEE
2026-10-08 22:56 ` Amirreza Zarrabi
2026-10-08 22:56 ` Amirreza Zarrabi
2026-10-08 22:56 ` Amirreza Zarrabi via OP-TEE
2026-10-06 0:39 ` [PATCH RFC v2 7/8] tee: optee: bind RPMI services and negotiate backend capabilities Amirreza Zarrabi
2026-10-06 0:39 ` Amirreza Zarrabi
2026-10-06 0:39 ` Amirreza Zarrabi via OP-TEE
2026-10-06 0:53 ` sashiko-bot
2026-10-08 8:20 ` Jens Wiklander
2026-10-08 8:20 ` Jens Wiklander
2026-10-08 8:20 ` Jens Wiklander via OP-TEE
2026-10-08 23:10 ` Amirreza Zarrabi
2026-10-08 23:10 ` Amirreza Zarrabi via OP-TEE
2026-10-08 23:10 ` Amirreza Zarrabi
2026-10-09 14:43 ` Jens Wiklander
2026-10-09 14:43 ` Jens Wiklander
2026-10-09 14:43 ` Jens Wiklander via OP-TEE
2026-10-06 0:39 ` [PATCH RFC v2 8/8] tee: optee: support RPMI asynchronous notification doorbells Amirreza Zarrabi
2026-10-06 0:39 ` Amirreza Zarrabi
2026-10-06 0:39 ` Amirreza Zarrabi via OP-TEE
2026-10-06 0:47 ` sashiko-bot [this message]
2026-10-08 6:15 ` [PATCH RFC v2 0/8] tee: optee: add RPMI backend support on RISC-V Jens Wiklander
2026-10-08 6:15 ` Jens Wiklander
2026-10-08 6:15 ` Jens Wiklander via OP-TEE
2026-10-08 23:21 ` Amirreza Zarrabi
2026-10-08 23:21 ` Amirreza Zarrabi
2026-10-08 23:21 ` Amirreza Zarrabi via OP-TEE
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=20261006004747.BDBD71F000FF@smtp.kernel.org \
--to=sashiko-bot@kernel.org \
--cc=amirreza.zarrabi@oss.qualcomm.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=robh@kernel.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.