m25p80: do not put iovec on the stack
commitcace7b801d49430522840fa13e9ac2bdc2dcf941
authorPaolo Bonzini <pbonzini@redhat.com>
Mon, 4 Jul 2016 12:06:37 +0000 (4 13:06 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Mon, 4 Jul 2016 12:15:22 +0000 (4 13:15 +0100)
tree8b2215b5de4780b52c83cd6b1e582dab9d876a9c
parent7673bb4cd305637b37bd0c0b79dd3bf6deb55172
m25p80: do not put iovec on the stack

When doing a read-modify-write cycle, QEMU uses the iovec after returning
from blk_aio_pwritev.  m25p80 puts the iovec on the stack of blk_aio_pwritev's
caller, which causes trouble in this case.  This has been a problem
since commit 243e6f6 ("m25p80: Switch to byte-based block access",
2016-05-12) started doing writes at a smaller granularity than 512 bytes.
In principle however it could have broken before when using -drive
if=mtd,cache=none on a disk with 4K native sectors.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
Message-id: 1467138270-32481-3-git-send-email-clg@kaod.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
hw/block/m25p80.c