hw/net/can/ctucan_core: Use stl_le_p to write to tx_buffers
Instead of casting an address within a uint8_t array to a uint32_t*, use stl_le_p(). This handles possibly misaligned addresses which would otherwise crash on some hosts. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Pavel Pisa <pisa@cmp.felk.cvut.cz> Tested-by: Pavel Pisa <pisa@cmp.felk.cvut.cz> Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
parent
676ea985c0
commit
71182187dd
|
@ -303,11 +303,9 @@ void ctucan_mem_write(CtuCanCoreState *s, hwaddr addr, uint64_t val,
|
|||
addr -= CTU_CAN_FD_TXTB1_DATA_1;
|
||||
buff_num = addr / CTUCAN_CORE_TXBUFF_SPAN;
|
||||
addr %= CTUCAN_CORE_TXBUFF_SPAN;
|
||||
addr &= ~3;
|
||||
if ((buff_num < CTUCAN_CORE_TXBUF_NUM) &&
|
||||
(addr < sizeof(s->tx_buffer[buff_num].data))) {
|
||||
uint32_t *bufp = (uint32_t *)(s->tx_buffer[buff_num].data + addr);
|
||||
*bufp = cpu_to_le32(val);
|
||||
((addr + size) <= sizeof(s->tx_buffer[buff_num].data))) {
|
||||
stn_le_p(s->tx_buffer[buff_num].data + addr, size, val);
|
||||
}
|
||||
} else {
|
||||
switch (addr & ~3) {
|
||||
|
|
Loading…
Reference in New Issue