mirror of
https://github.com/qemu/qemu.git
synced 2025-08-09 10:25:06 +00:00
vmxnet3: Do not fill stats if device is inactive
Guest OS may issue VMXNET3_CMD_GET_STATS even before device was activated (for example in linux, after insmod but prior net-dev open). Accessing shared descriptors prior device activation is illegal as the VMXNET3State structures have not been fully initialized. As a result, guest memory gets corrupted and may lead to guest OS crashes. Fix, by not filling the stats descriptors if device is inactive. Reported-by: Leonid Shatz <leonid.shatz@ravellosystems.com> Acked-by: Dmitry Fleytman <dmitry@daynix.com> Signed-off-by: Dana Rubin <dana.rubin@ravellosystems.com> Signed-off-by: Shmulik Ladkani <shmulik.ladkani@ravellosystems.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
d3e0c032f5
commit
eedeeeffd4
@ -1289,6 +1289,10 @@ static uint32_t vmxnet3_get_interrupt_config(VMXNET3State *s)
|
|||||||
static void vmxnet3_fill_stats(VMXNET3State *s)
|
static void vmxnet3_fill_stats(VMXNET3State *s)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (!s->device_active)
|
||||||
|
return;
|
||||||
|
|
||||||
for (i = 0; i < s->txq_num; i++) {
|
for (i = 0; i < s->txq_num; i++) {
|
||||||
cpu_physical_memory_write(s->txq_descr[i].tx_stats_pa,
|
cpu_physical_memory_write(s->txq_descr[i].tx_stats_pa,
|
||||||
&s->txq_descr[i].txq_stats,
|
&s->txq_descr[i].txq_stats,
|
||||||
|
Loading…
Reference in New Issue
Block a user