CVE-2026-46011: media: mtk-jpeg: fix use-after-free in release path due to uncancelled work

Published May 27, 2026
·
Updated

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

media: mtk-jpeg: fix use-after-free in release path due to uncancelled work

The mtkjpegrelease() function frees the context structure (ctx) without first cancelling any pending or running work in ctx->jpegwork. This creates a race window where the workqueue callback may still be accessing the context memory after it has been freed.

Race condition:

CPU 0 (release) CPU 1 (workqueue) ---------------- ------------------ close() mtkjpegrelease() mtkjpegencworker() ctx = work->data // accessing ctx

kfree(ctx) // freed! access ctx // UAF!

The work is queued via queuework() during JPEG encode/decode operations (via mtkjpegdevicerun). If the device is closed while work is pending or running, the work handler will access freed memory.

Fix this by calling cancelworksync() BEFORE acquiring the mutex. This ordering is critical: if cancelworksync() is called after mutexlock(), and the work handler also tries to acquire the same mutex, it would cause a deadlock.

Note: The open error path does NOT need cancelworksync() because INITWORK() only initializes the work structure - it does not schedule it. Work is only scheduled later during ioctl operations.

Affected Software

6 affected componentsFixes available
Linux Linux kernel (mtk-jpeg)
Linux Linux kernel>=6.2<6.6.140
Linux Linux kernel>=6.7<6.12.86
Linux Linux kernel>=6.13<6.18.27
Linux Linux kernel>=6.19<7.0.4
Microsoft azl3 kernel 6.6.139.1-1<6.6.141.1-1
6.6.141.1-1

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 6.6.141.1-1
  2. Compensating control

    In mtk_jpeg_release(), call cancel_work_sync() to cancel pending/running ctx->jpeg_work before acquiring any mutex or freeing the context (ctx). Ensure the ordering is critical: cancel_work_sync() BEFORE mutex_lock() and BEFORE kfree(ctx) so the worker cannot access freed ctx (UAF).

Event History

May 27, 2026
CVE Published
via MITRE·12:56 PM
Data Sourced
via MITRE·12:56 PM
DescriptionSeverity
Data Sourced
via NVD·02:17 PM
RemedyDescriptionSeverityWeaknessAffected Software
May 28, 2026
Data Sourced
via Microsoft·08:01 AM
DescriptionSeverityWeaknessAffected Software

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