[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH for 2.4 2/3] net/dp8393x: specify memory operations
From: |
Hervé Poussineau |
Subject: |
[Qemu-devel] [PATCH for 2.4 2/3] net/dp8393x: specify memory operations for PROM PROM |
Date: |
Fri, 24 Jul 2015 20:42:22 +0200 |
This fixes a guest-triggerable QEMU crash when guest tries to write to PROM.
Signed-off-by: Hervé Poussineau <address@hidden>
---
hw/net/dp8393x.c | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/hw/net/dp8393x.c b/hw/net/dp8393x.c
index 8fafdb0..55168b5 100644
--- a/hw/net/dp8393x.c
+++ b/hw/net/dp8393x.c
@@ -601,6 +601,16 @@ static const MemoryRegionOps dp8393x_ops = {
.endianness = DEVICE_NATIVE_ENDIAN,
};
+static bool dp8393x_rom_accepts(void *opaque, hwaddr addr, unsigned int size,
+ bool is_write)
+{
+ return !is_write;
+}
+
+static const MemoryRegionOps dp8393x_rom_ops = {
+ .valid.accepts = dp8393x_rom_accepts,
+};
+
static void dp8393x_watchdog(void *opaque)
{
dp8393xState *s = opaque;
@@ -840,7 +850,7 @@ static void dp8393x_realize(DeviceState *dev, Error **errp)
s->watchdog = timer_new_ns(QEMU_CLOCK_VIRTUAL, dp8393x_watchdog, s);
s->regs[SONIC_SR] = 0x0004; /* only revision recognized by Linux */
- memory_region_init_rom_device(&s->prom, OBJECT(dev), NULL, NULL,
+ memory_region_init_rom_device(&s->prom, OBJECT(dev), &dp8393x_rom_ops,
NULL,
"dp8393x-prom", SONIC_PROM_SIZE, NULL);
prom = memory_region_get_ram_ptr(&s->prom);
checksum = 0;
--
2.1.4