summaryrefslogtreecommitdiffstats
path: root/hw/audio/intel-hda.c
diff options
context:
space:
mode:
authorGerd Hoffmann2018-11-23 07:39:57 +0100
committerGerd Hoffmann2018-11-27 07:47:57 +0100
commit7ec910675929a593c9890f412125c31c578cde6e (patch)
tree9da6f05703d37f5fd208457b81e069300cc2ff92 /hw/audio/intel-hda.c
parentcirrus_vga/migration: update the bank offset before use (diff)
downloadqemu-7ec910675929a593c9890f412125c31c578cde6e.tar.gz
qemu-7ec910675929a593c9890f412125c31c578cde6e.tar.xz
qemu-7ec910675929a593c9890f412125c31c578cde6e.zip
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
Diffstat (limited to 'hw/audio/intel-hda.c')
-rw-r--r--hw/audio/intel-hda.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/hw/audio/intel-hda.c b/hw/audio/intel-hda.c
index 23a2cf6484..33e333cc26 100644
--- a/hw/audio/intel-hda.c
+++ b/hw/audio/intel-hda.c
@@ -23,6 +23,7 @@
#include "hw/pci/msi.h"
#include "qemu/timer.h"
#include "qemu/bitops.h"
+#include "qemu/log.h"
#include "hw/audio/soundhw.h"
#include "intel-hda.h"
#include "intel-hda-defs.h"
@@ -929,6 +930,11 @@ static void intel_hda_reg_write(IntelHDAState *d, const IntelHDAReg *reg, uint32
if (!reg) {
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) {
time_t now = time(NULL);