{"id":"CVE-2026-80806","state":"PUBLISHED","title":"ext4: don't enable DAX on new encrypted files","description":"In the Linux kernel, the following vulnerability has been resolved:\n\next4: don't enable DAX on new encrypted files\n\nCurrently, when a new encrypted regular file is created, the call to\next4_set_inode_flags(inode, init=true) in __ext4_new_inode() is made\nbefore EXT4_INODE_ENCRYPT is set.  As a result, it can set S_DAX if the\nfilesystem is mounted with \"-o dax=always\".\n\nEXT4_INODE_ENCRYPT then actually gets set a bit later in\n__ext4_new_inode(), when it calls fscrypt_set_context() which calls\next4_set_context().  ext4_set_context() sets EXT4_INODE_ENCRYPT and\ncalls ext4_set_inode_flags(inode, init=false) to set S_ENCRYPTED too.\n\nThis was intended to clear S_DAX as well.  However, this was broken by\ncommit 043546e46dc7 (\"fs/ext4: Only change S_DAX on inode load\").  This\ncauses data written to the file to bypass encryption, also causing\nxfstests failures such as generic/548 (when \"-o dax=always\" is used).\n\nFix this by simplifying the flow by making __ext4_new_inode() set\nEXT4_INODE_ENCRYPT earlier.  This makes it take effect in\next4_set_inode_flags(inode, init=true), making S_DAX never be set.\n\nSimilarly, make EXT4_STATE_MAY_INLINE_DATA never be set in the first\nplace on new encrypted inodes.  Then it doesn't need to be cleared.\n\nAs a result of these simplifications, ext4_set_context() no longer needs\nto change inode flags or state when 'handle != NULL'.  Remove that too.","publishedAt":"2026-09-04T15:13:20.282Z","updatedAt":"2026-10-19T08:43:59.390Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"043546e46dc70c25ff7e2cf6d09cbb0424fc9978","status":"affected","lessThan":"add98959b220935b243170214c787bc03044a44d","versionType":"git"},{"version":"043546e46dc70c25ff7e2cf6d09cbb0424fc9978","status":"affected","lessThan":"f53b325068bca0b238c3e0d2eb7de9b1f2268cab","versionType":"git"},{"version":"043546e46dc70c25ff7e2cf6d09cbb0424fc9978","status":"affected","lessThan":"5959cad3cfa852ec07bbdaf9c17f4838a94a8e6c","versionType":"git"},{"version":"043546e46dc70c25ff7e2cf6d09cbb0424fc9978","status":"affected","lessThan":"a13f61ba9b2a7a4ff1f140949ccfad23c5313757","versionType":"git"},{"version":"043546e46dc70c25ff7e2cf6d09cbb0424fc9978","status":"affected","lessThan":"ed1cd834da65db127f1c30ff67e78f14825a06c1","versionType":"git"},{"version":"043546e46dc70c25ff7e2cf6d09cbb0424fc9978","status":"affected","lessThan":"458776af0061afec1014cb3cd0061e282e482e83","versionType":"git"},{"version":"043546e46dc70c25ff7e2cf6d09cbb0424fc9978","status":"affected","lessThan":"3392391b363a63ebb531d45318a729b1c998565b","versionType":"git"},{"version":"043546e46dc70c25ff7e2cf6d09cbb0424fc9978","status":"affected","lessThan":"e27bae352158c007143d5bb50f3af33a177c0a37","versionType":"git"},{"version":"043546e46dc70c25ff7e2cf6d09cbb0424fc9978","status":"affected","lessThan":"da32af420d6d466e247c43ac0b829edeac7ae0ad","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/ext4/crypto.c","fs/ext4/ialloc.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.8","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.8","versionType":"semver"},{"version":"5.10.269","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.220","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.187","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.156","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.108","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.47","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.11","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2.1","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":["fs/ext4/crypto.c","fs/ext4/ialloc.c"]}],"references":["https://git.kernel.org/stable/c/add98959b220935b243170214c787bc03044a44d","https://git.kernel.org/stable/c/f53b325068bca0b238c3e0d2eb7de9b1f2268cab","https://git.kernel.org/stable/c/5959cad3cfa852ec07bbdaf9c17f4838a94a8e6c","https://git.kernel.org/stable/c/a13f61ba9b2a7a4ff1f140949ccfad23c5313757","https://git.kernel.org/stable/c/ed1cd834da65db127f1c30ff67e78f14825a06c1","https://git.kernel.org/stable/c/458776af0061afec1014cb3cd0061e282e482e83","https://git.kernel.org/stable/c/3392391b363a63ebb531d45318a729b1c998565b","https://git.kernel.org/stable/c/e27bae352158c007143d5bb50f3af33a177c0a37","https://git.kernel.org/stable/c/da32af420d6d466e247c43ac0b829edeac7ae0ad"],"weaknesses":[],"ingestedAt":"2026-10-29T20:13:07.220Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/80xxx/CVE-2026-80806.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-80806","state":"PUBLISHED","datePublished":"2026-09-04T15:13:20.282Z","dateUpdated":"2026-10-19T08:43:59.390Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-08-26T14:34:25.794Z"},"containers":{"cna":{"title":"ext4: don't enable DAX on new encrypted files","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\next4: don't enable DAX on new encrypted files\n\nCurrently, when a new encrypted regular file is created, the call to\next4_set_inode_flags(inode, init=true) in __ext4_new_inode() is made\nbefore EXT4_INODE_ENCRYPT is set.  As a result, it can set S_DAX if the\nfilesystem is mounted with \"-o dax=always\".\n\nEXT4_INODE_ENCRYPT then actually gets set a bit later in\n__ext4_new_inode(), when it calls fscrypt_set_context() which calls\next4_set_context().  ext4_set_context() sets EXT4_INODE_ENCRYPT and\ncalls ext4_set_inode_flags(inode, init=false) to set S_ENCRYPTED too.\n\nThis was intended to clear S_DAX as well.  However, this was broken by\ncommit 043546e46dc7 (\"fs/ext4: Only change S_DAX on inode load\").  This\ncauses data written to the file to bypass encryption, also causing\nxfstests failures such as generic/548 (when \"-o dax=always\" is used).\n\nFix this by simplifying the flow by making __ext4_new_inode() set\nEXT4_INODE_ENCRYPT earlier.  This makes it take effect in\next4_set_inode_flags(inode, init=true), making S_DAX never be set.\n\nSimilarly, make EXT4_STATE_MAY_INLINE_DATA never be set in the first\nplace on new encrypted inodes.  Then it doesn't need to be cleared.\n\nAs a result of these simplifications, ext4_set_context() no longer needs\nto change inode flags or state when 'handle != NULL'.  Remove that too."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"043546e46dc70c25ff7e2cf6d09cbb0424fc9978","status":"affected","lessThan":"add98959b220935b243170214c787bc03044a44d","versionType":"git"},{"version":"043546e46dc70c25ff7e2cf6d09cbb0424fc9978","status":"affected","lessThan":"f53b325068bca0b238c3e0d2eb7de9b1f2268cab","versionType":"git"},{"version":"043546e46dc70c25ff7e2cf6d09cbb0424fc9978","status":"affected","lessThan":"5959cad3cfa852ec07bbdaf9c17f4838a94a8e6c","versionType":"git"},{"version":"043546e46dc70c25ff7e2cf6d09cbb0424fc9978","status":"affected","lessThan":"a13f61ba9b2a7a4ff1f140949ccfad23c5313757","versionType":"git"},{"version":"043546e46dc70c25ff7e2cf6d09cbb0424fc9978","status":"affected","lessThan":"ed1cd834da65db127f1c30ff67e78f14825a06c1","versionType":"git"},{"version":"043546e46dc70c25ff7e2cf6d09cbb0424fc9978","status":"affected","lessThan":"458776af0061afec1014cb3cd0061e282e482e83","versionType":"git"},{"version":"043546e46dc70c25ff7e2cf6d09cbb0424fc9978","status":"affected","lessThan":"3392391b363a63ebb531d45318a729b1c998565b","versionType":"git"},{"version":"043546e46dc70c25ff7e2cf6d09cbb0424fc9978","status":"affected","lessThan":"e27bae352158c007143d5bb50f3af33a177c0a37","versionType":"git"},{"version":"043546e46dc70c25ff7e2cf6d09cbb0424fc9978","status":"affected","lessThan":"da32af420d6d466e247c43ac0b829edeac7ae0ad","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/ext4/crypto.c","fs/ext4/ialloc.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.8","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.8","versionType":"semver"},{"version":"5.10.269","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.220","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.187","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.156","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.108","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.47","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.11","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2.1","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":["fs/ext4/crypto.c","fs/ext4/ialloc.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/add98959b220935b243170214c787bc03044a44d"},{"url":"https://git.kernel.org/stable/c/f53b325068bca0b238c3e0d2eb7de9b1f2268cab"},{"url":"https://git.kernel.org/stable/c/5959cad3cfa852ec07bbdaf9c17f4838a94a8e6c"},{"url":"https://git.kernel.org/stable/c/a13f61ba9b2a7a4ff1f140949ccfad23c5313757"},{"url":"https://git.kernel.org/stable/c/ed1cd834da65db127f1c30ff67e78f14825a06c1"},{"url":"https://git.kernel.org/stable/c/458776af0061afec1014cb3cd0061e282e482e83"},{"url":"https://git.kernel.org/stable/c/3392391b363a63ebb531d45318a729b1c998565b"},{"url":"https://git.kernel.org/stable/c/e27bae352158c007143d5bb50f3af33a177c0a37"},{"url":"https://git.kernel.org/stable/c/da32af420d6d466e247c43ac0b829edeac7ae0ad"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-19T08:43:59.390Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.8","versionEndExcluding":"5.10.269"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.8","versionEndExcluding":"5.15.220"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.8","versionEndExcluding":"6.1.187"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.8","versionEndExcluding":"6.6.156"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.8","versionEndExcluding":"6.12.108"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.8","versionEndExcluding":"6.18.47"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.8","versionEndExcluding":"7.1.11"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.8","versionEndExcluding":"7.2.1"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.8","versionEndExcluding":"7.3"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}