On 10/20/2015 03:11 PM, Dmitry Fleytman wrote: > Hi Jason, > > Sure. No problem. > > Acked-by: Dmitry Fleytman <dmi...@daynix.com <mailto:dmi...@daynix.com>> > > Dmitry.
Thanks. > >> On 20 Oct 2015, at 06:08 AM, Jason Wang <jasow...@redhat.com >> <mailto:jasow...@redhat.com>> wrote: >> >> >> >> On 10/18/2015 03:16 PM, Dmitry Fleytman wrote: >>> ACK >> >> Hi Dmitry: >> >> Thanks a lot for the reviewing. >> >> As I want to add your "Acked-by" in the patch, could you pls add a >> formal one in the future? (Which can make my life a little bit easier). >> >>>> On 15 Oct 2015, at 13:54 PM, Dana Rubin >>>> <shmulik.ladk...@ravellosystems.com >>>> <mailto:shmulik.ladk...@ravellosystems.com>> wrote: >>>> >>>> From: Shmulik Ladkani <shmulik.ladk...@ravellosystems.com >>>> <mailto:shmulik.ladk...@ravellosystems.com>> >>>> >>>> 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.sh...@ravellosystems.com >>>> <mailto:leonid.sh...@ravellosystems.com>> >>>> Signed-off-by: Dana Rubin <dana.ru...@ravellosystems.com >>>> <mailto:dana.ru...@ravellosystems.com>> >>>> Signed-off-by: Shmulik Ladkani <shmulik.ladk...@ravellosystems.com >>>> <mailto:shmulik.ladk...@ravellosystems.com>> >>>> --- >>>> hw/net/vmxnet3.c | 4 ++++ >>>> 1 file changed, 4 insertions(+) >>>> >>>> diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c >>>> index 3c5e10d..5e3a233 100644 >>>> --- a/hw/net/vmxnet3.c >>>> +++ b/hw/net/vmxnet3.c >>>> @@ -1289,6 +1289,10 @@ static uint32_t >>>> vmxnet3_get_interrupt_config(VMXNET3State *s) >>>> static void vmxnet3_fill_stats(VMXNET3State *s) >>>> { >>>> int i; >>>> + >>>> + if (!s->device_active) >>>> + return; >>>> + >>>> for (i = 0; i < s->txq_num; i++) { >>>> cpu_physical_memory_write(s->txq_descr[i].tx_stats_pa, >>>> &s->txq_descr[i].txq_stats, >>>> -- >>>> 1.9.1 >>>> >>> >> >