summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Huth2021-07-15 12:37:55 +0200
committerThomas Huth2021-07-19 09:33:39 +0200
commit6a932c4ed8748b08c58cdba3fc9485d5549aacca (patch)
tree897423dd5a773b893183dec0bf696ccb4f3fbadf
parentconfigure: Fix endianess test with LTO (diff)
downloadqemu-6a932c4ed8748b08c58cdba3fc9485d5549aacca.tar.gz
qemu-6a932c4ed8748b08c58cdba3fc9485d5549aacca.tar.xz
qemu-6a932c4ed8748b08c58cdba3fc9485d5549aacca.zip
hw/net/vmxnet3: Do not abort if the guest is trying to use an invalid TX queue
QEMU should never abort just because the guest is doing something odd. Let's simply log the error and ignore the bad transmit queue instead. Buglink: https://bugs.launchpad.net/qemu/+bug/1926111 Message-Id: <20210715103755.1035566-1-thuth@redhat.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Thomas Huth <thuth@redhat.com>
-rw-r--r--hw/net/vmxnet3.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/hw/net/vmxnet3.c b/hw/net/vmxnet3.c
index eff299f629..f6bd8c53b1 100644
--- a/hw/net/vmxnet3.c
+++ b/hw/net/vmxnet3.c
@@ -23,6 +23,7 @@
#include "net/checksum.h"
#include "sysemu/sysemu.h"
#include "qemu/bswap.h"
+#include "qemu/log.h"
#include "qemu/module.h"
#include "hw/pci/msix.h"
#include "hw/pci/msi.h"
@@ -1093,8 +1094,12 @@ vmxnet3_io_bar0_write(void *opaque, hwaddr addr,
int tx_queue_idx =
VMW_MULTIREG_IDX_BY_ADDR(addr, VMXNET3_REG_TXPROD,
VMXNET3_REG_ALIGN);
- assert(tx_queue_idx <= s->txq_num);
- vmxnet3_process_tx_queue(s, tx_queue_idx);
+ if (tx_queue_idx <= s->txq_num) {
+ vmxnet3_process_tx_queue(s, tx_queue_idx);
+ } else {
+ qemu_log_mask(LOG_GUEST_ERROR, "vmxnet3: Illegal TX queue %d/%d\n",
+ tx_queue_idx, s->txq_num);
+ }
return;
}