{"api_version":"1","generated_at":"2026-04-23T15:08:15+00:00","cve":"CVE-2026-31455","urls":{"html":"https://cve.report/CVE-2026-31455","api":"https://cve.report/api/cve/CVE-2026-31455.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-31455","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-31455"},"summary":{"title":"xfs: stop reclaim before pushing AIL during unmount","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nxfs: stop reclaim before pushing AIL during unmount\n\nThe unmount sequence in xfs_unmount_flush_inodes() pushed the AIL while\nbackground reclaim and inodegc are still running. This is broken\nindependently of any use-after-free issues - background reclaim and\ninodegc should not be running while the AIL is being pushed during\nunmount, as inodegc can dirty and insert inodes into the AIL during the\nflush, and background reclaim can race to abort and free dirty inodes.\n\nReorder xfs_unmount_flush_inodes() to stop inodegc and cancel background\nreclaim before pushing the AIL. Stop inodegc before cancelling\nm_reclaim_work because the inodegc worker can re-queue m_reclaim_work\nvia xfs_inodegc_set_reclaimable.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-04-22 14:16:40","updated_at":"2026-04-22 14:16:40"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/bda27fc0b4eb3a425d9a18475c4cb94fbe862c60","name":"https://git.kernel.org/stable/c/bda27fc0b4eb3a425d9a18475c4cb94fbe862c60","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/239d734c00644072862fa833805c4471573b1445","name":"https://git.kernel.org/stable/c/239d734c00644072862fa833805c4471573b1445","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/e6cc490048f78b009259a5f032acead9f789c34c","name":"https://git.kernel.org/stable/c/e6cc490048f78b009259a5f032acead9f789c34c","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/d38135af04a3ad8a585c899d176efc8e97853115","name":"https://git.kernel.org/stable/c/d38135af04a3ad8a585c899d176efc8e97853115","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/8147e304d7d32fd5c3e943babc296ce2873dc279","name":"https://git.kernel.org/stable/c/8147e304d7d32fd5c3e943babc296ce2873dc279","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/a89434a6188d8430ea31120da96e3e4cefb58686","name":"https://git.kernel.org/stable/c/a89434a6188d8430ea31120da96e3e4cefb58686","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/4f24a767e3d64a5f58c595b5c29b6063a201f1e3","name":"https://git.kernel.org/stable/c/4f24a767e3d64a5f58c595b5c29b6063a201f1e3","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/558e3275d8a3b101be18a7fe7d1634053e9d9b07","name":"https://git.kernel.org/stable/c/558e3275d8a3b101be18a7fe7d1634053e9d9b07","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-31455","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-31455","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 90c60e16401248a4900f3f9387f563d0178dcf34 e6cc490048f78b009259a5f032acead9f789c34c git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 90c60e16401248a4900f3f9387f563d0178dcf34 239d734c00644072862fa833805c4471573b1445 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 90c60e16401248a4900f3f9387f563d0178dcf34 bda27fc0b4eb3a425d9a18475c4cb94fbe862c60 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 90c60e16401248a4900f3f9387f563d0178dcf34 d38135af04a3ad8a585c899d176efc8e97853115 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 90c60e16401248a4900f3f9387f563d0178dcf34 a89434a6188d8430ea31120da96e3e4cefb58686 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 90c60e16401248a4900f3f9387f563d0178dcf34 8147e304d7d32fd5c3e943babc296ce2873dc279 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 90c60e16401248a4900f3f9387f563d0178dcf34 558e3275d8a3b101be18a7fe7d1634053e9d9b07 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 90c60e16401248a4900f3f9387f563d0178dcf34 4f24a767e3d64a5f58c595b5c29b6063a201f1e3 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 5.9","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.9 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.10.253 5.10.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.15.203 5.15.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.1.168 6.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.131 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.80 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.21 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.19.11 6.19.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.0 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["fs/xfs/xfs_mount.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"e6cc490048f78b009259a5f032acead9f789c34c","status":"affected","version":"90c60e16401248a4900f3f9387f563d0178dcf34","versionType":"git"},{"lessThan":"239d734c00644072862fa833805c4471573b1445","status":"affected","version":"90c60e16401248a4900f3f9387f563d0178dcf34","versionType":"git"},{"lessThan":"bda27fc0b4eb3a425d9a18475c4cb94fbe862c60","status":"affected","version":"90c60e16401248a4900f3f9387f563d0178dcf34","versionType":"git"},{"lessThan":"d38135af04a3ad8a585c899d176efc8e97853115","status":"affected","version":"90c60e16401248a4900f3f9387f563d0178dcf34","versionType":"git"},{"lessThan":"a89434a6188d8430ea31120da96e3e4cefb58686","status":"affected","version":"90c60e16401248a4900f3f9387f563d0178dcf34","versionType":"git"},{"lessThan":"8147e304d7d32fd5c3e943babc296ce2873dc279","status":"affected","version":"90c60e16401248a4900f3f9387f563d0178dcf34","versionType":"git"},{"lessThan":"558e3275d8a3b101be18a7fe7d1634053e9d9b07","status":"affected","version":"90c60e16401248a4900f3f9387f563d0178dcf34","versionType":"git"},{"lessThan":"4f24a767e3d64a5f58c595b5c29b6063a201f1e3","status":"affected","version":"90c60e16401248a4900f3f9387f563d0178dcf34","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["fs/xfs/xfs_mount.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"5.9"},{"lessThan":"5.9","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"5.10.*","status":"unaffected","version":"5.10.253","versionType":"semver"},{"lessThanOrEqual":"5.15.*","status":"unaffected","version":"5.15.203","versionType":"semver"},{"lessThanOrEqual":"6.1.*","status":"unaffected","version":"6.1.168","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.131","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.80","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.21","versionType":"semver"},{"lessThanOrEqual":"6.19.*","status":"unaffected","version":"6.19.11","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.0","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.10.253","versionStartIncluding":"5.9","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.15.203","versionStartIncluding":"5.9","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.1.168","versionStartIncluding":"5.9","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.131","versionStartIncluding":"5.9","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.80","versionStartIncluding":"5.9","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.21","versionStartIncluding":"5.9","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.19.11","versionStartIncluding":"5.9","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.0","versionStartIncluding":"5.9","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nxfs: stop reclaim before pushing AIL during unmount\n\nThe unmount sequence in xfs_unmount_flush_inodes() pushed the AIL while\nbackground reclaim and inodegc are still running. This is broken\nindependently of any use-after-free issues - background reclaim and\ninodegc should not be running while the AIL is being pushed during\nunmount, as inodegc can dirty and insert inodes into the AIL during the\nflush, and background reclaim can race to abort and free dirty inodes.\n\nReorder xfs_unmount_flush_inodes() to stop inodegc and cancel background\nreclaim before pushing the AIL. Stop inodegc before cancelling\nm_reclaim_work because the inodegc worker can re-queue m_reclaim_work\nvia xfs_inodegc_set_reclaimable."}],"providerMetadata":{"dateUpdated":"2026-04-22T13:53:48.914Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/e6cc490048f78b009259a5f032acead9f789c34c"},{"url":"https://git.kernel.org/stable/c/239d734c00644072862fa833805c4471573b1445"},{"url":"https://git.kernel.org/stable/c/bda27fc0b4eb3a425d9a18475c4cb94fbe862c60"},{"url":"https://git.kernel.org/stable/c/d38135af04a3ad8a585c899d176efc8e97853115"},{"url":"https://git.kernel.org/stable/c/a89434a6188d8430ea31120da96e3e4cefb58686"},{"url":"https://git.kernel.org/stable/c/8147e304d7d32fd5c3e943babc296ce2873dc279"},{"url":"https://git.kernel.org/stable/c/558e3275d8a3b101be18a7fe7d1634053e9d9b07"},{"url":"https://git.kernel.org/stable/c/4f24a767e3d64a5f58c595b5c29b6063a201f1e3"}],"title":"xfs: stop reclaim before pushing AIL during unmount","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-31455","datePublished":"2026-04-22T13:53:48.914Z","dateReserved":"2026-03-09T15:48:24.092Z","dateUpdated":"2026-04-22T13:53:48.914Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-04-22 14:16:40","lastModifiedDate":"2026-04-22 14:16:40","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"31455","Ordinal":"1","Title":"xfs: stop reclaim before pushing AIL during unmount","CVE":"CVE-2026-31455","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"31455","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nxfs: stop reclaim before pushing AIL during unmount\n\nThe unmount sequence in xfs_unmount_flush_inodes() pushed the AIL while\nbackground reclaim and inodegc are still running. This is broken\nindependently of any use-after-free issues - background reclaim and\ninodegc should not be running while the AIL is being pushed during\nunmount, as inodegc can dirty and insert inodes into the AIL during the\nflush, and background reclaim can race to abort and free dirty inodes.\n\nReorder xfs_unmount_flush_inodes() to stop inodegc and cancel background\nreclaim before pushing the AIL. Stop inodegc before cancelling\nm_reclaim_work because the inodegc worker can re-queue m_reclaim_work\nvia xfs_inodegc_set_reclaimable.","Type":"Description","Title":"xfs: stop reclaim before pushing AIL during unmount"}]}}}