diff options
| author | Jia Jia <physicalmtea@gmail.com> | 2026-08-19 10:12:30 +0800 |
|---|---|---|
| committer | Michael S. Tsirkin <mst@redhat.com> | 2026-09-04 17:06:02 -0400 |
| commit | c3ed97c5296ed0c6df475fac89a10dabde8d6a69 (patch) | |
| tree | e314961d766a02821166a95a90157beec9b5212c /scripts/Makefile.thinlto | |
| parent | 975eeb2291a6a410c1a7199c273384de436c13ac (diff) | |
| download | linux-next-c3ed97c5296ed0c6df475fac89a10dabde8d6a69.tar.gz linux-next-c3ed97c5296ed0c6df475fac89a10dabde8d6a69.zip | |
virtio_console: do not free control-out buffers on remove
__send_control_msg() publishes &portdev->cpkt as the control-out
virtqueue cookie. remove_vqs() walks every virtqueue and passes leftover
cookies to free_buf(), which treats them as struct port_buffer and
reads sgpages.
If a control message is still on c_ovq when the device is unbound,
free_buf() reads past the ports_device object.
KASAN reported slab-out-of-bounds in free_buf():
free_buf
remove_vqs
virtcons_remove
unbind_store
The object was the ports_device allocated in virtcons_probe().
Drain c_ovq without freeing. The packet lives in portdev and is released
with it.
Fixes: a7a69ec0d8e4 ("virtio_console: free buffers after reset")
Signed-off-by: Jia Jia <physicalmtea@gmail.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Message-ID: <20260819021230.292696-1-physicalmtea@gmail.com>
Diffstat (limited to 'scripts/Makefile.thinlto')
0 files changed, 0 insertions, 0 deletions
