{"id":"CVE-2026-99133","state":"PUBLISHED","title":"net/iucv: fix the recvmsg window update","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet/iucv: fix the recvmsg window update\n\niucv_sock_recvmsg() sends the HiperSockets-only AF_IUCV_FLAG_WIN without\ntesting the transport, so on a classic z/VM socket iucv_send_ctrl() sizes\nthe skb through a NULL iucv->hs_dev. SO_MSGLIMIT accepts 1, so msglimit / 2\nis zero and one recvmsg() on its own socket is enough for an unprivileged\nprocess to take a spurious disconnect.\n\nIt also calls iucv_send_ctrl() under spin_lock_bh(&message_q.lock), which\nallocates GFP_KERNEL inside a section the code treats as atomic. Sending\noutside that lock lets two recvmsg() reach afiucv_hs_send() at once, where\nmsg_recv is sampled for the advertised window and subtracted after\ndev_queue_xmit() -- and sendmsg reaches that counter under lock_sock()\nwhile recvmsg holds no socket lock, so both can subtract the same value,\nthe counter goes negative and the credit reaches the peer twice.\n\nTest the transport, claim the credit with atomic_xchg() after the last\nerror exit and hand it back if the transmit fails, and send once the lock\nis dropped.","publishedAt":"2026-10-28T10:34:46.398Z","updatedAt":"2026-10-30T12:42:06.467Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"3881ac441f642d56503818123446f7298442236b","status":"affected","lessThan":"01123990f59ce32a1a5e690a4aeee002e932bb07","versionType":"git"},{"version":"3881ac441f642d56503818123446f7298442236b","status":"affected","lessThan":"1ebe68bbf8e75eeccaca0c7bc9694f5bc0c3f00a","versionType":"git"},{"version":"3881ac441f642d56503818123446f7298442236b","status":"affected","lessThan":"23e7fbbdca5aaba2a9a7bb9e4f2dc179c290ee76","versionType":"git"},{"version":"3881ac441f642d56503818123446f7298442236b","status":"affected","lessThan":"ce8aac3eb57f5366fa082b7cb8a1ac5652274f37","versionType":"git"},{"version":"3881ac441f642d56503818123446f7298442236b","status":"affected","lessThan":"8f2efa742f4cfe7dd756154f8bc07350dbe3ec92","versionType":"git"},{"version":"3881ac441f642d56503818123446f7298442236b","status":"affected","lessThan":"fe7393a627db2d093e8c0cae69d619b30fefae5f","versionType":"git"},{"version":"3881ac441f642d56503818123446f7298442236b","status":"affected","lessThan":"fa5acd038ea657ad5033713d6916214cbd349151","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/iucv/af_iucv.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.2","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.2","versionType":"semver"},{"version":"5.15.224","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.191","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.161","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.115","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.59","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.13","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":["net/iucv/af_iucv.c"]}],"references":["https://git.kernel.org/stable/c/01123990f59ce32a1a5e690a4aeee002e932bb07","https://git.kernel.org/stable/c/1ebe68bbf8e75eeccaca0c7bc9694f5bc0c3f00a","https://git.kernel.org/stable/c/23e7fbbdca5aaba2a9a7bb9e4f2dc179c290ee76","https://git.kernel.org/stable/c/ce8aac3eb57f5366fa082b7cb8a1ac5652274f37","https://git.kernel.org/stable/c/8f2efa742f4cfe7dd756154f8bc07350dbe3ec92","https://git.kernel.org/stable/c/fe7393a627db2d093e8c0cae69d619b30fefae5f","https://git.kernel.org/stable/c/fa5acd038ea657ad5033713d6916214cbd349151"],"weaknesses":[],"ingestedAt":"2026-10-30T13:02:04.640Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/99xxx/CVE-2026-99133.json","commit":"cb14bf1b43b0c9f05f7f40eae2246263fd430780","baselineCommit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-99133","state":"PUBLISHED","datePublished":"2026-10-28T10:34:46.398Z","dateUpdated":"2026-10-30T12:42:06.467Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-09-25T10:25:14.394Z"},"containers":{"cna":{"title":"net/iucv: fix the recvmsg window update","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnet/iucv: fix the recvmsg window update\n\niucv_sock_recvmsg() sends the HiperSockets-only AF_IUCV_FLAG_WIN without\ntesting the transport, so on a classic z/VM socket iucv_send_ctrl() sizes\nthe skb through a NULL iucv->hs_dev. SO_MSGLIMIT accepts 1, so msglimit / 2\nis zero and one recvmsg() on its own socket is enough for an unprivileged\nprocess to take a spurious disconnect.\n\nIt also calls iucv_send_ctrl() under spin_lock_bh(&message_q.lock), which\nallocates GFP_KERNEL inside a section the code treats as atomic. Sending\noutside that lock lets two recvmsg() reach afiucv_hs_send() at once, where\nmsg_recv is sampled for the advertised window and subtracted after\ndev_queue_xmit() -- and sendmsg reaches that counter under lock_sock()\nwhile recvmsg holds no socket lock, so both can subtract the same value,\nthe counter goes negative and the credit reaches the peer twice.\n\nTest the transport, claim the credit with atomic_xchg() after the last\nerror exit and hand it back if the transmit fails, and send once the lock\nis dropped."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"3881ac441f642d56503818123446f7298442236b","status":"affected","lessThan":"01123990f59ce32a1a5e690a4aeee002e932bb07","versionType":"git"},{"version":"3881ac441f642d56503818123446f7298442236b","status":"affected","lessThan":"1ebe68bbf8e75eeccaca0c7bc9694f5bc0c3f00a","versionType":"git"},{"version":"3881ac441f642d56503818123446f7298442236b","status":"affected","lessThan":"23e7fbbdca5aaba2a9a7bb9e4f2dc179c290ee76","versionType":"git"},{"version":"3881ac441f642d56503818123446f7298442236b","status":"affected","lessThan":"ce8aac3eb57f5366fa082b7cb8a1ac5652274f37","versionType":"git"},{"version":"3881ac441f642d56503818123446f7298442236b","status":"affected","lessThan":"8f2efa742f4cfe7dd756154f8bc07350dbe3ec92","versionType":"git"},{"version":"3881ac441f642d56503818123446f7298442236b","status":"affected","lessThan":"fe7393a627db2d093e8c0cae69d619b30fefae5f","versionType":"git"},{"version":"3881ac441f642d56503818123446f7298442236b","status":"affected","lessThan":"fa5acd038ea657ad5033713d6916214cbd349151","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/iucv/af_iucv.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"3.2","status":"affected"},{"version":"0","status":"unaffected","lessThan":"3.2","versionType":"semver"},{"version":"5.15.224","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.191","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.161","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.115","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.59","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.13","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":["net/iucv/af_iucv.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/01123990f59ce32a1a5e690a4aeee002e932bb07"},{"url":"https://git.kernel.org/stable/c/1ebe68bbf8e75eeccaca0c7bc9694f5bc0c3f00a"},{"url":"https://git.kernel.org/stable/c/23e7fbbdca5aaba2a9a7bb9e4f2dc179c290ee76"},{"url":"https://git.kernel.org/stable/c/ce8aac3eb57f5366fa082b7cb8a1ac5652274f37"},{"url":"https://git.kernel.org/stable/c/8f2efa742f4cfe7dd756154f8bc07350dbe3ec92"},{"url":"https://git.kernel.org/stable/c/fe7393a627db2d093e8c0cae69d619b30fefae5f"},{"url":"https://git.kernel.org/stable/c/fa5acd038ea657ad5033713d6916214cbd349151"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-30T12:42:06.467Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.2","versionEndExcluding":"5.15.224"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.2","versionEndExcluding":"6.1.191"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.2","versionEndExcluding":"6.6.161"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.2","versionEndExcluding":"6.12.115"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.2","versionEndExcluding":"6.18.59"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.2","versionEndExcluding":"7.2.13"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"3.2","versionEndExcluding":"7.3"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}