Description
In the Linux kernel, the following vulnerability has been resolved: vsock/virtio: bind uarg before filling zerocopy skb virtio_transport_send_pkt_info() allocates or reuses the zerocopy uarg before entering the send loop, but virtio_transport_alloc_skb() still fills the skb before it inherits that uarg. When fixed-buffer vectored zerocopy hits MAX_SKB_FRAGS, io_sg_from_iter() may partially attach managed frags and return -EMSGSIZE. The rollback path call kfree_skb() to free an skb that carries SKBFL_MANAGED_FRAG_REFS but no uarg, so skb_release_data() falls through to ordinary frag unref. Pass the uarg into virtio_transport_alloc_skb() and bind it immediately before virtio_transport_fill_skb(). This keeps control or no-payload skbs untouched while ensuring success and rollback share one lifetime rule.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
581512a6dc939ef122e49336626ae159f3b8a345 to < 72194f65050958e4c8e069adb6c5d89ef81ca197affected581512a6dc939ef122e49336626ae159f3b8a345 to < b62e2b2b4a50953ca952f3cd3f77dd62dc50fd5daffected581512a6dc939ef122e49336626ae159f3b8a345 to < 5d317573f1d48e76cce5fb6250452b6e4102e0fbaffected581512a6dc939ef122e49336626ae159f3b8a345 to < 1e584c304cfb94a759417130b1fc6d30b30c4cceaffected
Linux Linux
Default version status: affected
6.7affected0 to < 6.7unaffected6.12.97 to ≤ 6.12.*unaffected6.18.35 to ≤ 6.18.*unaffected7.0.12 to ≤ 7.0.*unaffected7.1 to ≤ *unaffected