hw/char/serial: Assert serial_ioport_read/write offset fits 8 bytes
The serial device has 8 registers, each 8-bit. The MemoryRegionOps 'serial_io_ops' is initialized with max_access_size=1, and all memory_region_init_io() callers correctly set the region size to 8 bytes: - serial_io_realize - serial_isa_realizefn - serial_pci_realize - multi_serial_pci_realize It is safe to assert the offset argument of serial_ioport_read() and serial_ioport_write() is always less than 8. Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20200907015535.827885-2-f4bug@amsat.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
4bad7c3b58
commit
6ab9be1ec1
@ -344,7 +344,7 @@ static void serial_ioport_write(void *opaque, hwaddr addr, uint64_t val,
|
|||||||
{
|
{
|
||||||
SerialState *s = opaque;
|
SerialState *s = opaque;
|
||||||
|
|
||||||
addr &= 7;
|
assert(size == 1 && addr < 8);
|
||||||
trace_serial_ioport_write(addr, val);
|
trace_serial_ioport_write(addr, val);
|
||||||
switch(addr) {
|
switch(addr) {
|
||||||
default:
|
default:
|
||||||
@ -485,7 +485,7 @@ static uint64_t serial_ioport_read(void *opaque, hwaddr addr, unsigned size)
|
|||||||
SerialState *s = opaque;
|
SerialState *s = opaque;
|
||||||
uint32_t ret;
|
uint32_t ret;
|
||||||
|
|
||||||
addr &= 7;
|
assert(size == 1 && addr < 8);
|
||||||
switch(addr) {
|
switch(addr) {
|
||||||
default:
|
default:
|
||||||
case 0:
|
case 0:
|
||||||
|
Loading…
Reference in New Issue
Block a user