media: video-i2c: fix kthread error pointer left in kthread_vid_cap on failure
- 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: video-i2c: fix kthread error pointer left in kthread_vid_cap on failure kthread_run() returns an ERR_PTR on failure, not NULL. When start_streaming() fails, data->kthread_vid_cap is left holding this error pointer instead of being cleared. This causes two subsequent bugs: 1. A future call to start_streaming() sees a non-NULL kthread_vid_cap and returns 0 (success) immediately, without actually starting the capture thread. 2. A call to stop_streaming() checks 'kthread_vid_cap == NULL' which is false for an error pointer, and proceeds to call kthread_stop() on the error pointer, leading to a kernel crash. Fix this by resetting kthread_vid_cap to NULL on failure before jumping to the error path.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 5cebaac609744414463d1ecc28fdecd26c1b9bc1 · fixed in db0f4531aa55cfb0171684ebfffe3ff04b79d5a8; From 5cebaac609744414463d1ecc28fdecd26c1b9bc1 · fixed in 0fac63cac6689588da530764ccb6ba55ee8e4d8b; From 5cebaac609744414463d1ecc28fdecd26c1b9bc1 · fixed in 5c35d380bea60503c4fe0986fe1de6a3263282b3; From 5cebaac609744414463d1ecc28fdecd26c1b9bc1 · fixed in 3d1b10d81fe54852ed953f4129577b733bbd6907; From 5cebaac609744414463d1ecc28fdecd26c1b9bc1 · fixed in 968c5213e34c48d35febdfd09cf3dc58ad039140; From 5cebaac609744414463d1ecc28fdecd26c1b9bc1 · fixed in 52fd9d80c0cea7bf09e7ee36cad316e5c39b7fe6; From 5cebaac609744414463d1ecc28fdecd26c1b9bc1 · fixed in 0e7f2cd72a4f9268ee09a13b13f3339e7cc71557; From 5cebaac609744414463d1ecc28fdecd26c1b9bc1 · fixed in 76e379754ba618989f6215be608d5c04774a611d
- Linux Linux
4.18
- KernelLinux
From 4.18.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/db0f4531aa55cfb0171684ebfffe3ff04b79d5a8
- stable/c/0fac63cac6689588da530764ccb6ba55ee8e4d8b
- stable/c/5c35d380bea60503c4fe0986fe1de6a3263282b3
- stable/c/3d1b10d81fe54852ed953f4129577b733bbd6907
- stable/c/968c5213e34c48d35febdfd09cf3dc58ad039140
- stable/c/52fd9d80c0cea7bf09e7ee36cad316e5c39b7fe6
- stable/c/0e7f2cd72a4f9268ee09a13b13f3339e7cc71557
- stable/c/76e379754ba618989f6215be608d5c04774a611d