CVE-2026-99024: optee: register TEE devices only once fully initialized

Published Oct 23, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

optee: register TEE devices only once fully initialized

opteeprobe() called teedeviceregister() on both the client and the supplicant device before the rest of struct optee had been initialized.

teedeviceregister() calls cdevdeviceadd(), which does two things at once: it creates /dev/tee0 and /dev/teepriv0, and it links the device into the tee class so that classfinddevice() can find it. From that moment on the device is reachable both from user space via teeopen() and from kernel space via teeclientopencontext(). The only gate in teedevopen() is teedeviceget(), which merely checks that teedev->desc is non-NULL, which was already set by teedevicealloc(). Therefore, there is effectively no gate at all.

A context opened in that window can run against a struct optee where

- optee->callqueue.mutex is not initialized by opteecqinit() - optee->supp mutex and completions is not initialized by opteesuppinit() - optee->rpmbdevmutex is not initialized yet, - the message argument cache is not initialized by opteeshmargcacheinit() - optee->ctx is still NULL

Any open session or invoke during this window takes uninitialized mutexes and dereferences a NULL pointer.

Fix it by moving both teedeviceregister() calls down to the point where all of struct optee is set up.

[JW: adding fixes and cc]

Affected Software

1 affected component
Linux Linux kernel

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Compensating control

    In optee_probe(), move both tee_device_register() calls to the point after all of struct optee has been initialized, including call_queue.mutex, ctx, rpmb_dev_mutex, supp mutexes and completions, and the message argument cache.

Event History

Oct 23, 2026
CVE Published
via MITRE·12:21 PM
Data Sourced
via MITRE·12:21 PM
Description

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203