media: i2c: ov7740: fix use-after-destroy in remove
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.110, and 2 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: media: i2c: ov7740: fix use-after-destroy in remove The ov7740_remove() function had a severe teardown order bug where it destroyed the driver's mutex before freeing the V4L2 control handler which relies on that mutex, leading to a use-after-destroy kernel panic. Furthermore, the driver explicitly called v4l2_ctrl_handler_free() and mutex_destroy() sequentially, but then called ov7740_free_controls() which invokes both of them a second time, resulting in a double-free. This patch fixes the issue by unregistering the subdevice first, and relying exclusively on ov7740_free_controls() to safely tear down the mutex and control handler in the correct order.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 39c5c4471b8d793daf868bd004e56ed420e89707 · fixed in 9e4693436c7dcf8584002500ce4b434b79bbf9ed; From 39c5c4471b8d793daf868bd004e56ed420e89707 · fixed in 81e9765878d3ac8ad18e3a683332b5d6bc3a0e33; From 39c5c4471b8d793daf868bd004e56ed420e89707 · fixed in 8a02ee6c1c4e88f3a0442bd60d3c77db9a30db5e; From 39c5c4471b8d793daf868bd004e56ed420e89707 · fixed in 7512838a19af0a284a58435292243fad21e57ff1; From 39c5c4471b8d793daf868bd004e56ed420e89707 · fixed in 25e2505866c577db2661e4d431f0907c6ec9a3b4; From 39c5c4471b8d793daf868bd004e56ed420e89707 · fixed in af81f35e4f429e769b784754e1aa4d7a922470ac; From 39c5c4471b8d793daf868bd004e56ed420e89707 · fixed in 09453b467990e8ef8fe09f45a685f9a625248d33; From 39c5c4471b8d793daf868bd004e56ed420e89707 · fixed in 5d1b3dea5a44124bab6c14a2d71b977dabed54e7
- Linux Linux
4.16
- KernelLinux
From 4.16.0 · fixed in 5.10.270; From 5.11.0 · fixed in 5.15.221; From 5.16.0 · fixed in 6.1.188; From 6.2.0 · fixed in 6.6.157; From 6.7.0 · fixed in 6.12.110; From 6.13.0 · fixed in 6.18.51; From 6.19.0 · fixed in 7.2.5
References 8
git.kernel.org
- stable/c/9e4693436c7dcf8584002500ce4b434b79bbf9ed
- stable/c/81e9765878d3ac8ad18e3a683332b5d6bc3a0e33
- stable/c/8a02ee6c1c4e88f3a0442bd60d3c77db9a30db5e
- stable/c/7512838a19af0a284a58435292243fad21e57ff1
- stable/c/25e2505866c577db2661e4d431f0907c6ec9a3b4
- stable/c/af81f35e4f429e769b784754e1aa4d7a922470ac
- stable/c/09453b467990e8ef8fe09f45a685f9a625248d33
- stable/c/5d1b3dea5a44124bab6c14a2d71b977dabed54e7