On 05/03/18 19:36, Paolo Bonzini wrote: > address_space_rw is calling address_space_to_flatview but it can > be called outside the RCU lock. To fix it, transform flatview_rw > into address_space_rw, since flatview_rw is otherwise unused. > > Cc: qemu-sta...@nongnu.org > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
Reviewed-by: Alexey Kardashevskiy <a...@ozlabs.ru> > --- > exec.c | 28 ++++++++++------------------ > 1 file changed, 10 insertions(+), 18 deletions(-) > > diff --git a/exec.c b/exec.c > index 070eaff3e7..8a99114c69 100644 > --- a/exec.c > +++ b/exec.c > @@ -3177,24 +3177,6 @@ static MemTxResult flatview_read(FlatView *fv, hwaddr > addr, > addr1, l, mr); > } > > -static MemTxResult flatview_rw(FlatView *fv, hwaddr addr, MemTxAttrs attrs, > - uint8_t *buf, int len, bool is_write) > -{ > - if (is_write) { > - return flatview_write(fv, addr, attrs, (uint8_t *)buf, len); > - } else { > - return flatview_read(fv, addr, attrs, (uint8_t *)buf, len); > - } > -} > - > -MemTxResult address_space_rw(AddressSpace *as, hwaddr addr, > - MemTxAttrs attrs, uint8_t *buf, > - int len, bool is_write) > -{ > - return flatview_rw(address_space_to_flatview(as), > - addr, attrs, buf, len, is_write); > -} > - > MemTxResult address_space_read_full(AddressSpace *as, hwaddr addr, > MemTxAttrs attrs, uint8_t *buf, int len) > { > @@ -3228,6 +3210,16 @@ MemTxResult address_space_write(AddressSpace *as, > hwaddr addr, > return result; > } > > +MemTxResult address_space_rw(AddressSpace *as, hwaddr addr, MemTxAttrs attrs, > + uint8_t *buf, int len, bool is_write) > +{ > + if (is_write) { > + return address_space_write(as, addr, attrs, buf, len); > + } else { > + return address_space_read_full(as, addr, attrs, buf, len); > + } > +} > + > void cpu_physical_memory_rw(hwaddr addr, uint8_t *buf, > int len, int is_write) > { > -- Alexey