audio/hda: fix guest triggerable assert

Guest writes to a readonly register trigger the assert in
intel_hda_reg_write().  Add a check and just ignore them.

Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1628433
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Message-id: 20181123063957.9515-1-kraxel@redhat.com
This commit is contained in:
Gerd Hoffmann 2018-11-23 07:39:57 +01:00
parent b7ee9e4970
commit 7ec9106759
1 changed files with 6 additions and 0 deletions

View File

@ -23,6 +23,7 @@
#include "hw/pci/msi.h" #include "hw/pci/msi.h"
#include "qemu/timer.h" #include "qemu/timer.h"
#include "qemu/bitops.h" #include "qemu/bitops.h"
#include "qemu/log.h"
#include "hw/audio/soundhw.h" #include "hw/audio/soundhw.h"
#include "intel-hda.h" #include "intel-hda.h"
#include "intel-hda-defs.h" #include "intel-hda-defs.h"
@ -929,6 +930,11 @@ static void intel_hda_reg_write(IntelHDAState *d, const IntelHDAReg *reg, uint32
if (!reg) { if (!reg) {
return; return;
} }
if (!reg->wmask) {
qemu_log_mask(LOG_GUEST_ERROR, "intel-hda: write to r/o reg %s\n",
reg->name);
return;
}
if (d->debug) { if (d->debug) {
time_t now = time(NULL); time_t now = time(NULL);