Commit a184e74f authored by Rabin Vincent's avatar Rabin Vincent Committed by Kevin Wolf
Browse files

nand: fix address overflow



The shifts of the address mask and value shift beyond 32 bits when there
are 5 address cycles.

Cc: qemu-stable@nongnu.org
Signed-off-by: default avatarRabin Vincent <rabin.vincent@axis.com>
Reviewed-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Reviewed-by: default avatarPeter Crosthwaite <crosthwaite.peter@gmail.com>
Signed-off-by: default avatarKevin Wolf <kwolf@redhat.com>
parent ab9b872a
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -522,8 +522,8 @@ void nand_setio(DeviceState *dev, uint32_t value)

    if (s->ale) {
        unsigned int shift = s->addrlen * 8;
        unsigned int mask = ~(0xff << shift);
        unsigned int v = value << shift;
        uint64_t mask = ~(0xffull << shift);
        uint64_t v = (uint64_t)value << shift;

        s->addr = (s->addr & mask) | v;
        s->addrlen ++;