{"id":"CVE-2026-31437","state":"PUBLISHED","title":"netfs: Fix NULL pointer dereference in netfs_unbuffered_write() on retry","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnetfs: Fix NULL pointer dereference in netfs_unbuffered_write() on retry\n\nWhen a write subrequest is marked NETFS_SREQ_NEED_RETRY, the retry path\nin netfs_unbuffered_write() unconditionally calls stream->prepare_write()\nwithout checking if it is NULL.\n\nFilesystems such as 9P do not set the prepare_write operation, so\nstream->prepare_write remains NULL. When get_user_pages() fails with\n-EFAULT and the subrequest is flagged for retry, this results in a NULL\npointer dereference at fs/netfs/direct_write.c:189.\n\nFix this by mirroring the pattern already used in write_retry.c: if\nstream->prepare_write is NULL, skip renegotiation and directly reissue\nthe subrequest via netfs_reissue_write(), which handles iterator reset,\nIN_PROGRESS flag, stats update and reissue internally.","publishedAt":"2026-04-22T13:53:36.361Z","updatedAt":"2026-05-11T22:08:41.432Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"72d08d2839649d1c5efbe375751f4473fa4486af","status":"affected","lessThan":"a4d1b4ba9754bac3efebd06f583a44a7af52c0ab","versionType":"git"},{"version":"0c29f6d63122a0168d67cb8ecde5b4cf7fe4acb0","status":"affected","lessThan":"7a5482f5ce891decbf36f2e6fab1e9fc4a76a684","versionType":"git"},{"version":"a0b4c7a49137ed21279f354eb59f49ddae8dffc2","status":"affected","lessThan":"e9075e420a1eb3b52c60f3b95893a55e77419ce8","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/netfs/direct_write.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"6.18.17","status":"affected","lessThan":"6.18.21","versionType":"semver"},{"version":"6.19.7","status":"affected","lessThan":"6.19.11","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/netfs/direct_write.c"]}],"references":["https://git.kernel.org/stable/c/a4d1b4ba9754bac3efebd06f583a44a7af52c0ab","https://git.kernel.org/stable/c/7a5482f5ce891decbf36f2e6fab1e9fc4a76a684","https://git.kernel.org/stable/c/e9075e420a1eb3b52c60f3b95893a55e77419ce8"],"weaknesses":[],"ingestedAt":"2026-10-29T20:11:40.391Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/31xxx/CVE-2026-31437.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-31437","state":"PUBLISHED","datePublished":"2026-04-22T13:53:36.361Z","dateUpdated":"2026-05-11T22:08:41.432Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-03-09T15:48:24.090Z"},"containers":{"cna":{"title":"netfs: Fix NULL pointer dereference in netfs_unbuffered_write() on retry","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnetfs: Fix NULL pointer dereference in netfs_unbuffered_write() on retry\n\nWhen a write subrequest is marked NETFS_SREQ_NEED_RETRY, the retry path\nin netfs_unbuffered_write() unconditionally calls stream->prepare_write()\nwithout checking if it is NULL.\n\nFilesystems such as 9P do not set the prepare_write operation, so\nstream->prepare_write remains NULL. When get_user_pages() fails with\n-EFAULT and the subrequest is flagged for retry, this results in a NULL\npointer dereference at fs/netfs/direct_write.c:189.\n\nFix this by mirroring the pattern already used in write_retry.c: if\nstream->prepare_write is NULL, skip renegotiation and directly reissue\nthe subrequest via netfs_reissue_write(), which handles iterator reset,\nIN_PROGRESS flag, stats update and reissue internally."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"72d08d2839649d1c5efbe375751f4473fa4486af","status":"affected","lessThan":"a4d1b4ba9754bac3efebd06f583a44a7af52c0ab","versionType":"git"},{"version":"0c29f6d63122a0168d67cb8ecde5b4cf7fe4acb0","status":"affected","lessThan":"7a5482f5ce891decbf36f2e6fab1e9fc4a76a684","versionType":"git"},{"version":"a0b4c7a49137ed21279f354eb59f49ddae8dffc2","status":"affected","lessThan":"e9075e420a1eb3b52c60f3b95893a55e77419ce8","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/netfs/direct_write.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"6.18.17","status":"affected","lessThan":"6.18.21","versionType":"semver"},{"version":"6.19.7","status":"affected","lessThan":"6.19.11","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/netfs/direct_write.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/a4d1b4ba9754bac3efebd06f583a44a7af52c0ab"},{"url":"https://git.kernel.org/stable/c/7a5482f5ce891decbf36f2e6fab1e9fc4a76a684"},{"url":"https://git.kernel.org/stable/c/e9075e420a1eb3b52c60f3b95893a55e77419ce8"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-05-11T22:08:41.432Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.18.17","versionEndExcluding":"6.18.21"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.19.7","versionEndExcluding":"6.19.11"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}