{"id":"CVE-2026-89498","state":"PUBLISHED","title":"orangefs: fix double-free of trailer_buf on readdir copy failure","description":"In the Linux kernel, the following vulnerability has been resolved:\n\norangefs: fix double-free of trailer_buf on readdir copy failure\n\nOn a readdir downcall, orangefs_devreq_write_iter() frees\nop->downcall.trailer_buf with vfree() when copy_from_iter_full() fails,\nbut does not clear the pointer before goto Efault. The waiter in\ndo_readdir() is then woken with a negative status and frees the same\npointer again on its r < 0 path, causing a deterministic double-free.\nA client holding /dev/pvfs2-req triggers it by sending a readdir\ndowncall whose declared trailer_size exceeds the bytes it supplies.\n\nClear the pointer after freeing so the readdir-side vfree() becomes a\nno-op.","publishedAt":"2026-09-11T19:43:48.096Z","updatedAt":"2026-10-19T08:47:49.902Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"382f4581e67f57209c7aa67e39f26ba076306a2e","status":"affected","lessThan":"712c4235fcc73c11a2f1d59a499d489e49c374a4","versionType":"git"},{"version":"382f4581e67f57209c7aa67e39f26ba076306a2e","status":"affected","lessThan":"433c2e470053cc9c712314d3d8c3dfbc862d68eb","versionType":"git"},{"version":"382f4581e67f57209c7aa67e39f26ba076306a2e","status":"affected","lessThan":"6e5924644ef4bce06a3cbb7cb841a8bbfdfc03ad","versionType":"git"},{"version":"382f4581e67f57209c7aa67e39f26ba076306a2e","status":"affected","lessThan":"9c9eacc47c618ed6d7d35fe75a40d294c8cdbffa","versionType":"git"},{"version":"382f4581e67f57209c7aa67e39f26ba076306a2e","status":"affected","lessThan":"2f5454a25127854c232fde5d1d65d16fbcd42d43","versionType":"git"},{"version":"382f4581e67f57209c7aa67e39f26ba076306a2e","status":"affected","lessThan":"f796f38a324e89547738f4b70cc33be5be2bc6da","versionType":"git"},{"version":"382f4581e67f57209c7aa67e39f26ba076306a2e","status":"affected","lessThan":"519f4146b8b8c5f20c2ad01913acd6df2df8fc8e","versionType":"git"},{"version":"382f4581e67f57209c7aa67e39f26ba076306a2e","status":"affected","lessThan":"f574296be7f46eb60beca851240b526df232f480","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/orangefs/devorangefs-req.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.12","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.12","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.109","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.50","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.4","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/orangefs/devorangefs-req.c"]}],"references":["https://git.kernel.org/stable/c/712c4235fcc73c11a2f1d59a499d489e49c374a4","https://git.kernel.org/stable/c/433c2e470053cc9c712314d3d8c3dfbc862d68eb","https://git.kernel.org/stable/c/6e5924644ef4bce06a3cbb7cb841a8bbfdfc03ad","https://git.kernel.org/stable/c/9c9eacc47c618ed6d7d35fe75a40d294c8cdbffa","https://git.kernel.org/stable/c/2f5454a25127854c232fde5d1d65d16fbcd42d43","https://git.kernel.org/stable/c/f796f38a324e89547738f4b70cc33be5be2bc6da","https://git.kernel.org/stable/c/519f4146b8b8c5f20c2ad01913acd6df2df8fc8e","https://git.kernel.org/stable/c/f574296be7f46eb60beca851240b526df232f480"],"weaknesses":[],"ingestedAt":"2026-10-29T20:13:26.108Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/89xxx/CVE-2026-89498.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-89498","state":"PUBLISHED","datePublished":"2026-09-11T19:43:48.096Z","dateUpdated":"2026-10-19T08:47:49.902Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-09-11T19:38:34.714Z"},"containers":{"cna":{"title":"orangefs: fix double-free of trailer_buf on readdir copy failure","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\norangefs: fix double-free of trailer_buf on readdir copy failure\n\nOn a readdir downcall, orangefs_devreq_write_iter() frees\nop->downcall.trailer_buf with vfree() when copy_from_iter_full() fails,\nbut does not clear the pointer before goto Efault. The waiter in\ndo_readdir() is then woken with a negative status and frees the same\npointer again on its r < 0 path, causing a deterministic double-free.\nA client holding /dev/pvfs2-req triggers it by sending a readdir\ndowncall whose declared trailer_size exceeds the bytes it supplies.\n\nClear the pointer after freeing so the readdir-side vfree() becomes a\nno-op."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"382f4581e67f57209c7aa67e39f26ba076306a2e","status":"affected","lessThan":"712c4235fcc73c11a2f1d59a499d489e49c374a4","versionType":"git"},{"version":"382f4581e67f57209c7aa67e39f26ba076306a2e","status":"affected","lessThan":"433c2e470053cc9c712314d3d8c3dfbc862d68eb","versionType":"git"},{"version":"382f4581e67f57209c7aa67e39f26ba076306a2e","status":"affected","lessThan":"6e5924644ef4bce06a3cbb7cb841a8bbfdfc03ad","versionType":"git"},{"version":"382f4581e67f57209c7aa67e39f26ba076306a2e","status":"affected","lessThan":"9c9eacc47c618ed6d7d35fe75a40d294c8cdbffa","versionType":"git"},{"version":"382f4581e67f57209c7aa67e39f26ba076306a2e","status":"affected","lessThan":"2f5454a25127854c232fde5d1d65d16fbcd42d43","versionType":"git"},{"version":"382f4581e67f57209c7aa67e39f26ba076306a2e","status":"affected","lessThan":"f796f38a324e89547738f4b70cc33be5be2bc6da","versionType":"git"},{"version":"382f4581e67f57209c7aa67e39f26ba076306a2e","status":"affected","lessThan":"519f4146b8b8c5f20c2ad01913acd6df2df8fc8e","versionType":"git"},{"version":"382f4581e67f57209c7aa67e39f26ba076306a2e","status":"affected","lessThan":"f574296be7f46eb60beca851240b526df232f480","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/orangefs/devorangefs-req.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.12","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.12","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.109","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.50","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.4","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/orangefs/devorangefs-req.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/712c4235fcc73c11a2f1d59a499d489e49c374a4"},{"url":"https://git.kernel.org/stable/c/433c2e470053cc9c712314d3d8c3dfbc862d68eb"},{"url":"https://git.kernel.org/stable/c/6e5924644ef4bce06a3cbb7cb841a8bbfdfc03ad"},{"url":"https://git.kernel.org/stable/c/9c9eacc47c618ed6d7d35fe75a40d294c8cdbffa"},{"url":"https://git.kernel.org/stable/c/2f5454a25127854c232fde5d1d65d16fbcd42d43"},{"url":"https://git.kernel.org/stable/c/f796f38a324e89547738f4b70cc33be5be2bc6da"},{"url":"https://git.kernel.org/stable/c/519f4146b8b8c5f20c2ad01913acd6df2df8fc8e"},{"url":"https://git.kernel.org/stable/c/f574296be7f46eb60beca851240b526df232f480"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-19T08:47:49.902Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.12","versionEndExcluding":"5.10.270"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.12","versionEndExcluding":"5.15.221"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.12","versionEndExcluding":"6.1.188"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.12","versionEndExcluding":"6.6.157"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.12","versionEndExcluding":"6.12.109"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.12","versionEndExcluding":"6.18.50"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.12","versionEndExcluding":"7.2.4"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.12","versionEndExcluding":"7.3"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}