On 2015-05-27 14:19, Hervé Poussineau wrote: > Don't write more than the field width, which is always 16 bit. > Fixes network in NetBSD 5.1/arc > > Signed-off-by: Hervé Poussineau <hpous...@reactos.org> > --- > hw/net/dp8393x.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/hw/net/dp8393x.c b/hw/net/dp8393x.c > index 4184045..b72b0b1 100644 > --- a/hw/net/dp8393x.c > +++ b/hw/net/dp8393x.c > @@ -761,10 +761,10 @@ static ssize_t dp8393x_receive(NetClientState *nc, > const uint8_t * buf, > /* EOL detected */ > s->regs[SONIC_ISR] |= SONIC_ISR_RDE; > } else { > - data[0 * width] = 0; /* in_use */ > + uint16_t in_use = 0; > address_space_rw(&s->as, > ((s->regs[SONIC_URDA] << 16) | s->regs[SONIC_CRDA]) + > sizeof(uint16_t) * 6 * width, > - MEMTXATTRS_UNSPECIFIED, (uint8_t *)data, size, 1); > + MEMTXATTRS_UNSPECIFIED, (uint8_t *)&in_use, sizeof(uint16_t), 1);
Why not initialising both data[0] and data[1] to 0 and a fixed size of 2 bytes instead of using a new variable? > s->regs[SONIC_CRDA] = s->regs[SONIC_LLFA]; > s->regs[SONIC_ISR] |= SONIC_ISR_PKTRX; > s->regs[SONIC_RSC] = (s->regs[SONIC_RSC] & 0xff00) | > (((s->regs[SONIC_RSC] & 0x00ff) + 1) & 0x00ff); That said: Reviewed-by: Aurelien Jarno <aurel...@aurel32.net> -- Aurelien Jarno GPG: 4096R/1DDD8C9B aurel...@aurel32.net http://www.aurel32.net