{"id":"CVE-2024-26874","state":"PUBLISHED","title":"drm/mediatek: Fix a null pointer crash in mtk_drm_crtc_finish_page_flip","description":"In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/mediatek: Fix a null pointer crash in mtk_drm_crtc_finish_page_flip\n\nIt's possible that mtk_crtc->event is NULL in\nmtk_drm_crtc_finish_page_flip().\n\npending_needs_vblank value is set by mtk_crtc->event, but in\nmtk_drm_crtc_atomic_flush(), it's is not guarded by the same\nlock in mtk_drm_finish_page_flip(), thus a race condition happens.\n\nConsider the following case:\n\nCPU1                              CPU2\nstep 1:\nmtk_drm_crtc_atomic_begin()\nmtk_crtc->event is not null,\n                                  step 1:\n                                  mtk_drm_crtc_atomic_flush:\n                                  mtk_drm_crtc_update_config(\n                                      !!mtk_crtc->event)\nstep 2:\nmtk_crtc_ddp_irq ->\nmtk_drm_finish_page_flip:\nlock\nmtk_crtc->event set to null,\npending_needs_vblank set to false\nunlock\n                                  pending_needs_vblank set to true,\n\n                                  step 2:\n                                  mtk_crtc_ddp_irq ->\n                                  mtk_drm_finish_page_flip called again,\n                                  pending_needs_vblank is still true\n                                  //null pointer\n\nInstead of guarding the entire mtk_drm_crtc_atomic_flush(), it's more\nefficient to just check if mtk_crtc->event is null before use.","publishedAt":"2024-04-17T10:27:33.278Z","updatedAt":"2026-05-11T20:05:48.588Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"119f5173628aa7a0c3cf9db83460d40709e8241d","status":"affected","lessThan":"accdac6b71d5a2b84040c3d2234f53a60edc398e","versionType":"git"},{"version":"119f5173628aa7a0c3cf9db83460d40709e8241d","status":"affected","lessThan":"dfde84cc6c589f2a9f820f12426d97365670b731","versionType":"git"},{"version":"119f5173628aa7a0c3cf9db83460d40709e8241d","status":"affected","lessThan":"4688be96d20ffa49d2186523ee84f475f316fd49","versionType":"git"},{"version":"119f5173628aa7a0c3cf9db83460d40709e8241d","status":"affected","lessThan":"9beec711a17245b853d64488fd5b739031612340","versionType":"git"},{"version":"119f5173628aa7a0c3cf9db83460d40709e8241d","status":"affected","lessThan":"d2bd30c710475b2e29288827d2c91f9e6e2b91d7","versionType":"git"},{"version":"119f5173628aa7a0c3cf9db83460d40709e8241d","status":"affected","lessThan":"a3dd12b64ae8373a41a216a0b621df224210860a","versionType":"git"},{"version":"119f5173628aa7a0c3cf9db83460d40709e8241d","status":"affected","lessThan":"9acee29a38b4d4b70f1f583e5ef9a245db4db710","versionType":"git"},{"version":"119f5173628aa7a0c3cf9db83460d40709e8241d","status":"affected","lessThan":"3fc88b246a2fc16014e374040fc15af1d3752535","versionType":"git"},{"version":"119f5173628aa7a0c3cf9db83460d40709e8241d","status":"affected","lessThan":"c958e86e9cc1b48cac004a6e245154dfba8e163b","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/mediatek/mtk_drm_crtc.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.7","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.7","versionType":"semver"},{"version":"4.19.311","status":"unaffected","lessThanOrEqual":"4.19.*","versionType":"semver"},{"version":"5.4.273","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.214","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.153","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.83","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.23","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.7.11","status":"unaffected","lessThanOrEqual":"6.7.*","versionType":"semver"},{"version":"6.8.2","status":"unaffected","lessThanOrEqual":"6.8.*","versionType":"semver"},{"version":"6.9","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/mediatek/mtk_drm_crtc.c"]}],"references":["https://git.kernel.org/stable/c/accdac6b71d5a2b84040c3d2234f53a60edc398e","https://git.kernel.org/stable/c/dfde84cc6c589f2a9f820f12426d97365670b731","https://git.kernel.org/stable/c/4688be96d20ffa49d2186523ee84f475f316fd49","https://git.kernel.org/stable/c/9beec711a17245b853d64488fd5b739031612340","https://git.kernel.org/stable/c/d2bd30c710475b2e29288827d2c91f9e6e2b91d7","https://git.kernel.org/stable/c/a3dd12b64ae8373a41a216a0b621df224210860a","https://git.kernel.org/stable/c/9acee29a38b4d4b70f1f583e5ef9a245db4db710","https://git.kernel.org/stable/c/3fc88b246a2fc16014e374040fc15af1d3752535","https://git.kernel.org/stable/c/c958e86e9cc1b48cac004a6e245154dfba8e163b","https://lists.debian.org/debian-lts-announce/2024/06/msg00017.html","https://lists.debian.org/debian-lts-announce/2024/06/msg00020.html"],"weaknesses":[],"ingestedAt":"2026-10-29T20:07:10.607Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2024/26xxx/CVE-2024-26874.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-26874","state":"PUBLISHED","datePublished":"2024-04-17T10:27:33.278Z","dateUpdated":"2026-05-11T20:05:48.588Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2024-02-19T14:20:24.185Z"},"containers":{"cna":{"title":"drm/mediatek: Fix a null pointer crash in mtk_drm_crtc_finish_page_flip","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/mediatek: Fix a null pointer crash in mtk_drm_crtc_finish_page_flip\n\nIt's possible that mtk_crtc->event is NULL in\nmtk_drm_crtc_finish_page_flip().\n\npending_needs_vblank value is set by mtk_crtc->event, but in\nmtk_drm_crtc_atomic_flush(), it's is not guarded by the same\nlock in mtk_drm_finish_page_flip(), thus a race condition happens.\n\nConsider the following case:\n\nCPU1                              CPU2\nstep 1:\nmtk_drm_crtc_atomic_begin()\nmtk_crtc->event is not null,\n                                  step 1:\n                                  mtk_drm_crtc_atomic_flush:\n                                  mtk_drm_crtc_update_config(\n                                      !!mtk_crtc->event)\nstep 2:\nmtk_crtc_ddp_irq ->\nmtk_drm_finish_page_flip:\nlock\nmtk_crtc->event set to null,\npending_needs_vblank set to false\nunlock\n                                  pending_needs_vblank set to true,\n\n                                  step 2:\n                                  mtk_crtc_ddp_irq ->\n                                  mtk_drm_finish_page_flip called again,\n                                  pending_needs_vblank is still true\n                                  //null pointer\n\nInstead of guarding the entire mtk_drm_crtc_atomic_flush(), it's more\nefficient to just check if mtk_crtc->event is null before use."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"119f5173628aa7a0c3cf9db83460d40709e8241d","status":"affected","lessThan":"accdac6b71d5a2b84040c3d2234f53a60edc398e","versionType":"git"},{"version":"119f5173628aa7a0c3cf9db83460d40709e8241d","status":"affected","lessThan":"dfde84cc6c589f2a9f820f12426d97365670b731","versionType":"git"},{"version":"119f5173628aa7a0c3cf9db83460d40709e8241d","status":"affected","lessThan":"4688be96d20ffa49d2186523ee84f475f316fd49","versionType":"git"},{"version":"119f5173628aa7a0c3cf9db83460d40709e8241d","status":"affected","lessThan":"9beec711a17245b853d64488fd5b739031612340","versionType":"git"},{"version":"119f5173628aa7a0c3cf9db83460d40709e8241d","status":"affected","lessThan":"d2bd30c710475b2e29288827d2c91f9e6e2b91d7","versionType":"git"},{"version":"119f5173628aa7a0c3cf9db83460d40709e8241d","status":"affected","lessThan":"a3dd12b64ae8373a41a216a0b621df224210860a","versionType":"git"},{"version":"119f5173628aa7a0c3cf9db83460d40709e8241d","status":"affected","lessThan":"9acee29a38b4d4b70f1f583e5ef9a245db4db710","versionType":"git"},{"version":"119f5173628aa7a0c3cf9db83460d40709e8241d","status":"affected","lessThan":"3fc88b246a2fc16014e374040fc15af1d3752535","versionType":"git"},{"version":"119f5173628aa7a0c3cf9db83460d40709e8241d","status":"affected","lessThan":"c958e86e9cc1b48cac004a6e245154dfba8e163b","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/mediatek/mtk_drm_crtc.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.7","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.7","versionType":"semver"},{"version":"4.19.311","status":"unaffected","lessThanOrEqual":"4.19.*","versionType":"semver"},{"version":"5.4.273","status":"unaffected","lessThanOrEqual":"5.4.*","versionType":"semver"},{"version":"5.10.214","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.153","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.83","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.23","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.7.11","status":"unaffected","lessThanOrEqual":"6.7.*","versionType":"semver"},{"version":"6.8.2","status":"unaffected","lessThanOrEqual":"6.8.*","versionType":"semver"},{"version":"6.9","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/mediatek/mtk_drm_crtc.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/accdac6b71d5a2b84040c3d2234f53a60edc398e"},{"url":"https://git.kernel.org/stable/c/dfde84cc6c589f2a9f820f12426d97365670b731"},{"url":"https://git.kernel.org/stable/c/4688be96d20ffa49d2186523ee84f475f316fd49"},{"url":"https://git.kernel.org/stable/c/9beec711a17245b853d64488fd5b739031612340"},{"url":"https://git.kernel.org/stable/c/d2bd30c710475b2e29288827d2c91f9e6e2b91d7"},{"url":"https://git.kernel.org/stable/c/a3dd12b64ae8373a41a216a0b621df224210860a"},{"url":"https://git.kernel.org/stable/c/9acee29a38b4d4b70f1f583e5ef9a245db4db710"},{"url":"https://git.kernel.org/stable/c/3fc88b246a2fc16014e374040fc15af1d3752535"},{"url":"https://git.kernel.org/stable/c/c958e86e9cc1b48cac004a6e245154dfba8e163b"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-05-11T20:05:48.588Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"4.19.311"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"5.4.273"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"5.10.214"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"5.15.153"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"6.1.83"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"6.6.23"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"6.7.11"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"6.8.2"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.7","versionEndExcluding":"6.9"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2024-26874","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"version":"2.0.3","timestamp":"2024-04-23T14:01:58.775611Z"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2024-07-05T17:21:21.785Z"}},{"title":"CVE Program Container","references":[{"url":"https://git.kernel.org/stable/c/accdac6b71d5a2b84040c3d2234f53a60edc398e","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/dfde84cc6c589f2a9f820f12426d97365670b731","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/4688be96d20ffa49d2186523ee84f475f316fd49","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/9beec711a17245b853d64488fd5b739031612340","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/d2bd30c710475b2e29288827d2c91f9e6e2b91d7","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/a3dd12b64ae8373a41a216a0b621df224210860a","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/9acee29a38b4d4b70f1f583e5ef9a245db4db710","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/3fc88b246a2fc16014e374040fc15af1d3752535","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/c958e86e9cc1b48cac004a6e245154dfba8e163b","tags":["x_transferred"]},{"url":"https://lists.debian.org/debian-lts-announce/2024/06/msg00017.html","tags":["x_transferred"]},{"url":"https://lists.debian.org/debian-lts-announce/2024/06/msg00020.html","tags":["x_transferred"]}],"providerMetadata":{"shortName":"CVE","orgId":"af854a3a-2127-422b-91ae-364da2661108","dateUpdated":"2024-08-02T00:21:04.219Z"}}]}}}