In the Linux kernel, the following vulnerability has been resolved:
scsi: storvsc: Fix swiotlb bounce buffer leak in confidential VM
storvscqueuecommand() maps the scatter/gather list using scsidmamap(), which in a confidential VM allocates swiotlb bounce buffers. If the I/O submission fails in storvscdo_io(), the I/O is typically retried by higher level code, but the bounce buffer memory is never freed. The mostly like cause of I/O submission failure is a full VMBus channel ring buffer, which is not uncommon under high I/O loads. Eventually enough bounce buffer memory leaks that the confidential VM can't do any I/O. The same problem can arise in a non-confidential VM with kernel boot parameter swiotlb=force.
Fix this by doing scsidmaunmap() in the case of an I/O submission error, which frees the bounce buffer memory.
[
{
"id": "CVE-2022-48890-0fd4c810",
"signature_type": "Function",
"signature_version": "v1",
"target": {
"file": "drivers/scsi/storvsc_drv.c",
"function": "storvsc_queuecommand"
},
"deprecated": false,
"digest": {
"length": 2638.0,
"function_hash": "184821857264601518052598031642888141010"
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@87c71e88f6a6619ffb1ff88f84dff48ef6d57adb"
},
{
"id": "CVE-2022-48890-a086a3e8",
"signature_type": "Line",
"signature_version": "v1",
"target": {
"file": "drivers/scsi/storvsc_drv.c"
},
"deprecated": false,
"digest": {
"line_hashes": [
"132460952986978051917696031989102031797",
"169566271865076041396762107045842728390",
"290785843913529746840370975794278068739"
],
"threshold": 0.9
},
"source": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git@87c71e88f6a6619ffb1ff88f84dff48ef6d57adb"
}
]