CVE-2026-89891

media: em28xx: fix use-after-free of dev_next->devlist on disconnect

State
Published
Severity
Not scored
Published
Sep 16, 2026
Updated
Oct 19, 2026
Reserved
Sep 11, 2026

Read the record on cve.org

Description

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

media: em28xx: fix use-after-free of dev_next->devlist on disconnect

When a device with has_dual_ts=1 is probed and the is_audio_only path is taken, both dev and dev->dev_next are added to the global em28xx_devlist via em28xx_init_extension(). However, during disconnect, em28xx_close_extension(dev) only calls list_del(&dev->devlist), leaving dev->dev_next->devlist still linked in the global list. When dev_next is subsequently freed via kref_put(), its devlist entry becomes a dangling pointer in em28xx_devlist. The next device probe that calls em28xx_init_extension() triggers a list corruption BUG when list_add_tail detects the freed node.

This bug was exposed by commit a368ecde8a50 ("USB: core: Fix duplicate endpoint bug by clearing reserved bits in the descriptor") which clears reserved bits in bEndpointAddress during endpoint parsing. This causes fuzzed endpoint addresses like 0xf3 to be normalized to 0x83, which em28xx interprets as a vendor audio endpoint, enabling the is_audio_only + has_dual_ts code path that was previously unreachable with such descriptors.

Fix this by removing dev->dev_next->devlist from the global list in em28xx_close_extension() before the device is freed.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • f410b4093fdd4d8f4644d3d486afe3040eceef7b to before f61720346fdcc1a2deec59a2f6cbb0cc20d1dc18Affected
  • f410b4093fdd4d8f4644d3d486afe3040eceef7b to before 1ed575b1991f68569eb589b7747d3bc26aa6a8a2Affected
  • f410b4093fdd4d8f4644d3d486afe3040eceef7b to before da4b07da6281e39ce4c01e1227e036f3bf600e14Affected
  • f410b4093fdd4d8f4644d3d486afe3040eceef7b to before 20aacd87550be297dc39a3f9532dcfff91586510Affected
  • f410b4093fdd4d8f4644d3d486afe3040eceef7b to before 20c2c65f3d9f7c278dc9750531d3201ac8bf78b7Affected
  • f410b4093fdd4d8f4644d3d486afe3040eceef7b to before 0782807552b6aff41b4656c6c9076a3231d3e79dAffected
  • f410b4093fdd4d8f4644d3d486afe3040eceef7b to before 16cb1ee17e093175b4d9ae33202f68e5b108cca2Affected
  • f410b4093fdd4d8f4644d3d486afe3040eceef7b to before 826915b6b65e2d3251e7248ea54289a22d748c84Affected
LinuxLinux
  • 4.17Affected
  • before 4.17Not affected
  • 5.10.270 through 5.10.*Not affected
  • 5.15.221 through 5.15.*Not affected
  • 6.1.188 through 6.1.*Not affected
  • 6.6.157 through 6.6.*Not affected
  • 6.12.110 through 6.12.*Not affected
  • 6.18.51 through 6.18.*Not affected
  • 7.2.5 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.