{"id":"CVE-2026-89871","state":"PUBLISHED","title":"media: video-i2c: fix kthread error pointer left in kthread_vid_cap on failure","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nmedia: video-i2c: fix kthread error pointer left in kthread_vid_cap on failure\n\nkthread_run() returns an ERR_PTR on failure, not NULL.\nWhen start_streaming() fails, data->kthread_vid_cap is left holding\nthis error pointer instead of being cleared.\n\nThis causes two subsequent bugs:\n1. A future call to start_streaming() sees a non-NULL kthread_vid_cap\n   and returns 0 (success) immediately, without actually starting the\n   capture thread.\n2. A call to stop_streaming() checks 'kthread_vid_cap == NULL' which\n   is false for an error pointer, and proceeds to call kthread_stop()\n   on the error pointer, leading to a kernel crash.\n\nFix this by resetting kthread_vid_cap to NULL on failure before\njumping to the error path.","publishedAt":"2026-09-16T10:31:39.961Z","updatedAt":"2026-10-19T08:54:04.386Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"5cebaac609744414463d1ecc28fdecd26c1b9bc1","status":"affected","lessThan":"db0f4531aa55cfb0171684ebfffe3ff04b79d5a8","versionType":"git"},{"version":"5cebaac609744414463d1ecc28fdecd26c1b9bc1","status":"affected","lessThan":"0fac63cac6689588da530764ccb6ba55ee8e4d8b","versionType":"git"},{"version":"5cebaac609744414463d1ecc28fdecd26c1b9bc1","status":"affected","lessThan":"5c35d380bea60503c4fe0986fe1de6a3263282b3","versionType":"git"},{"version":"5cebaac609744414463d1ecc28fdecd26c1b9bc1","status":"affected","lessThan":"3d1b10d81fe54852ed953f4129577b733bbd6907","versionType":"git"},{"version":"5cebaac609744414463d1ecc28fdecd26c1b9bc1","status":"affected","lessThan":"968c5213e34c48d35febdfd09cf3dc58ad039140","versionType":"git"},{"version":"5cebaac609744414463d1ecc28fdecd26c1b9bc1","status":"affected","lessThan":"52fd9d80c0cea7bf09e7ee36cad316e5c39b7fe6","versionType":"git"},{"version":"5cebaac609744414463d1ecc28fdecd26c1b9bc1","status":"affected","lessThan":"0e7f2cd72a4f9268ee09a13b13f3339e7cc71557","versionType":"git"},{"version":"5cebaac609744414463d1ecc28fdecd26c1b9bc1","status":"affected","lessThan":"76e379754ba618989f6215be608d5c04774a611d","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/media/i2c/video-i2c.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.18","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.18","versionType":"semver"},{"version":"5.10.270","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.221","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.188","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.157","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.110","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.51","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.5","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/media/i2c/video-i2c.c"]}],"references":["https://git.kernel.org/stable/c/db0f4531aa55cfb0171684ebfffe3ff04b79d5a8","https://git.kernel.org/stable/c/0fac63cac6689588da530764ccb6ba55ee8e4d8b","https://git.kernel.org/stable/c/5c35d380bea60503c4fe0986fe1de6a3263282b3","https://git.kernel.org/stable/c/3d1b10d81fe54852ed953f4129577b733bbd6907","https://git.kernel.org/stable/c/968c5213e34c48d35febdfd09cf3dc58ad039140","https://git.kernel.org/stable/c/52fd9d80c0cea7bf09e7ee36cad316e5c39b7fe6","https://git.kernel.org/stable/c/0e7f2cd72a4f9268ee09a13b13f3339e7cc71557","https://git.kernel.org/stable/c/76e379754ba618989f6215be608d5c04774a611d"],"weaknesses":[],"ingestedAt":"2026-10-29T20:13:26.108Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/89xxx/CVE-2026-89871.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-89871","state":"PUBLISHED","datePublished":"2026-09-16T10:31:39.961Z","dateUpdated":"2026-10-19T08:54:04.386Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-09-11T19:38:34.772Z"},"containers":{"cna":{"title":"media: video-i2c: fix kthread error pointer left in kthread_vid_cap on failure","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nmedia: video-i2c: fix kthread error pointer left in kthread_vid_cap on failure\n\nkthread_run() returns an ERR_PTR on failure, not NULL.\nWhen start_streaming() fails, data->kthread_vid_cap is left holding\nthis error pointer instead of being cleared.\n\nThis causes two subsequent bugs:\n1. A future call to start_streaming() sees a non-NULL kthread_vid_cap\n   and returns 0 (success) immediately, without actually starting the\n   capture thread.\n2. A call to stop_streaming() checks 'kthread_vid_cap == NULL' which\n   is false for an error pointer, and proceeds to call kthread_stop()\n   on the error pointer, leading to a kernel crash.\n\nFix this by resetting kthread_vid_cap to NULL on failure before\njumping to the error path."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"5cebaac609744414463d1ecc28fdecd26c1b9bc1","status":"affected","lessThan":"db0f4531aa55cfb0171684ebfffe3ff04b79d5a8","versionType":"git"},{"version":"5cebaac609744414463d1ecc28fdecd26c1b9bc1","status":"affected","lessThan":"0fac63cac6689588da530764ccb6ba55ee8e4d8b","versionType":"git"},{"version":"5cebaac609744414463d1ecc28fdecd26c1b9bc1","status":"affected","lessThan":"5c35d380bea60503c4fe0986fe1de6a3263282b3","versionType":"git"},{"version":"5cebaac609744414463d1ecc28fdecd26c1b9bc1","status":"affected","lessThan":"3d1b10d81fe54852ed953f4129577b733bbd6907","versionType":"git"},{"version":"5cebaac609744414463d1ecc28fdecd26c1b9bc1","status":"affected","lessThan":"968c5213e34c48d35febdfd09cf3dc58ad039140","versionType":"git"},{"version":"5cebaac609744414463d1ecc28fdecd26c1b9bc1","status":"affected","lessThan":"52fd9d80c0cea7bf09e7ee36cad316e5c39b7fe6","versionType":"git"},{"version":"5cebaac609744414463d1ecc28fdecd26c1b9bc1","status":"affected","lessThan":"0e7f2cd72a4f9268ee09a13b13f3339e7cc71557","versionType":"git"},{"version":"5cebaac609744414463d1ecc28fdecd26c1b9bc1","status":"affected","lessThan":"76e379754ba618989f6215be608d5c04774a611d","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/media/i2c/video-i2c.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.18","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.18","versionType":"semver"},{"version":"5.10.270","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.221","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.188","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.157","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.110","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.51","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.5","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/media/i2c/video-i2c.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/db0f4531aa55cfb0171684ebfffe3ff04b79d5a8"},{"url":"https://git.kernel.org/stable/c/0fac63cac6689588da530764ccb6ba55ee8e4d8b"},{"url":"https://git.kernel.org/stable/c/5c35d380bea60503c4fe0986fe1de6a3263282b3"},{"url":"https://git.kernel.org/stable/c/3d1b10d81fe54852ed953f4129577b733bbd6907"},{"url":"https://git.kernel.org/stable/c/968c5213e34c48d35febdfd09cf3dc58ad039140"},{"url":"https://git.kernel.org/stable/c/52fd9d80c0cea7bf09e7ee36cad316e5c39b7fe6"},{"url":"https://git.kernel.org/stable/c/0e7f2cd72a4f9268ee09a13b13f3339e7cc71557"},{"url":"https://git.kernel.org/stable/c/76e379754ba618989f6215be608d5c04774a611d"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-19T08:54:04.386Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.18","versionEndExcluding":"5.10.270"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.18","versionEndExcluding":"5.15.221"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.18","versionEndExcluding":"6.1.188"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.18","versionEndExcluding":"6.6.157"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.18","versionEndExcluding":"6.12.110"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.18","versionEndExcluding":"6.18.51"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.18","versionEndExcluding":"7.2.5"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.18","versionEndExcluding":"7.3"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}