CVE-2026-31583
media: em28xx: fix use-after-free in em28xx_v4l2_open()
Description
In the Linux kernel, the following vulnerability has been resolved: media: em28xx: fix use-after-free in em28xx_v4l2_open() em28xx_v4l2_open() reads dev->v4l2 without holding dev->lock, creating a race with em28xx_v4l2_init()'s error path and em28xx_v4l2_fini(), both of which free the em28xx_v4l2 struct and set dev->v4l2 to NULL under dev->lock. This race leads to two issues: - use-after-free in v4l2_fh_init() when accessing vdev->ctrl_handler, since the video_device is embedded in the freed em28xx_v4l2 struct. - NULL pointer dereference in em28xx_resolution_set() when accessing v4l2->norm, since dev->v4l2 has been set to NULL. Fix this by moving the mutex_lock() before the dev->v4l2 read and adding a NULL check for dev->v4l2 under the lock.
INFO
Published Date :
April 24, 2026, 3:16 p.m.
Last Modified :
June 1, 2026, 5:16 p.m.
Remotely Exploit :
No
Source :
416baaa9-dc9f-4396-8d5f-8c081fb06d67
CVSS Scores
| Score | Version | Severity | Vector | Exploitability Score | Impact Score | Source |
|---|---|---|---|---|---|---|
| CVSS 3.1 | HIGH | [email protected] |
Solution
- Acquire mutex lock before reading device V4L2 data.
- Add a NULL check for device V4L2 data under lock.
- Apply kernel patch to resolve the use-after-free.
References to Advisories, Solutions, and Tools
Here, you will find a curated list of external links that provide in-depth
information, practical solutions, and valuable tools related to
CVE-2026-31583.
CWE - Common Weakness Enumeration
While CVE identifies
specific instances of vulnerabilities, CWE categorizes the common flaws or
weaknesses that can lead to vulnerabilities. CVE-2026-31583 is
associated with the following CWEs:
Common Attack Pattern Enumeration and Classification (CAPEC)
Common Attack Pattern Enumeration and Classification
(CAPEC)
stores attack patterns, which are descriptions of the common attributes and
approaches employed by adversaries to exploit the CVE-2026-31583
weaknesses.
We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).
Results are limited to the first 15 repositories due to potential performance issues.
The following list is the news that have been mention
CVE-2026-31583 vulnerability anywhere in the article.
The following table lists the changes that have been made to the
CVE-2026-31583 vulnerability over time.
Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.
-
CVE Modified by 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Jun. 01, 2026
Action Type Old Value New Value Added Reference https://git.kernel.org/stable/c/2cbf81f76842e46bdf25823c70e1db4044a65678 Added Reference https://git.kernel.org/stable/c/38a327221f7f765e7d853b7bafe47e342441ec85 Added Reference https://git.kernel.org/stable/c/3c0283a59e36e3707c4a81f4952e362d31f876b8 -
Initial Analysis by [email protected]
Apr. 27, 2026
Action Type Old Value New Value Added CVSS V3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H Added CWE CWE-416 Added CPE Configuration OR *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.13 up to (excluding) 6.18.24 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.19 up to (excluding) 6.19.14 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 7.0 up to (excluding) 7.0.1 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions up to (excluding) 6.6.136 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.12 up to (excluding) 6.12.83 Added Reference Type kernel.org: https://git.kernel.org/stable/c/5fb2940327722b4684d2f964b54c1c90aa277324 Types: Patch Added Reference Type kernel.org: https://git.kernel.org/stable/c/6b9e66437cc6123ddedac141e1b8b6fcf57d2972 Types: Patch Added Reference Type kernel.org: https://git.kernel.org/stable/c/871b8ea8ef39a6c253594649f4339378fad3d0dd Types: Patch Added Reference Type kernel.org: https://git.kernel.org/stable/c/a66485a934c7187ae8e36517d40615fa2e961cff Types: Patch Added Reference Type kernel.org: https://git.kernel.org/stable/c/b5d141ea15f173f15b9f0a72965902f3428c0d92 Types: Patch Added Reference Type kernel.org: https://git.kernel.org/stable/c/dd2b888e08d3b3d6aacd65d76cd44fac11da750f Types: Patch -
CVE Modified by 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Apr. 27, 2026
Action Type Old Value New Value Added Reference https://git.kernel.org/stable/c/b5d141ea15f173f15b9f0a72965902f3428c0d92 -
CVE Modified by 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Apr. 27, 2026
Action Type Old Value New Value Added Reference https://git.kernel.org/stable/c/a66485a934c7187ae8e36517d40615fa2e961cff -
New CVE Received by 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Apr. 24, 2026
Action Type Old Value New Value Added Description In the Linux kernel, the following vulnerability has been resolved: media: em28xx: fix use-after-free in em28xx_v4l2_open() em28xx_v4l2_open() reads dev->v4l2 without holding dev->lock, creating a race with em28xx_v4l2_init()'s error path and em28xx_v4l2_fini(), both of which free the em28xx_v4l2 struct and set dev->v4l2 to NULL under dev->lock. This race leads to two issues: - use-after-free in v4l2_fh_init() when accessing vdev->ctrl_handler, since the video_device is embedded in the freed em28xx_v4l2 struct. - NULL pointer dereference in em28xx_resolution_set() when accessing v4l2->norm, since dev->v4l2 has been set to NULL. Fix this by moving the mutex_lock() before the dev->v4l2 read and adding a NULL check for dev->v4l2 under the lock. Added Reference https://git.kernel.org/stable/c/5fb2940327722b4684d2f964b54c1c90aa277324 Added Reference https://git.kernel.org/stable/c/6b9e66437cc6123ddedac141e1b8b6fcf57d2972 Added Reference https://git.kernel.org/stable/c/871b8ea8ef39a6c253594649f4339378fad3d0dd Added Reference https://git.kernel.org/stable/c/dd2b888e08d3b3d6aacd65d76cd44fac11da750f