Commit ad0c60fa authored by Paolo Bonzini's avatar Paolo Bonzini
Browse files

address_space_map: address_space_to_flatview needs RCU lock



address_space_map is calling address_space_to_flatview but it can
be called outside the RCU lock.  The function itself is calling
rcu_read_lock/rcu_read_unlock, just in the wrong place, so the
fix is easy.

Reviewed-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 11e732a5
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -3468,7 +3468,7 @@ void *address_space_map(AddressSpace *as,
    hwaddr l, xlat;
    MemoryRegion *mr;
    void *ptr;
    FlatView *fv = address_space_to_flatview(as);
    FlatView *fv;

    if (len == 0) {
        return NULL;
@@ -3476,6 +3476,7 @@ void *address_space_map(AddressSpace *as,

    l = len;
    rcu_read_lock();
    fv = address_space_to_flatview(as);
    mr = flatview_translate(fv, addr, &xlat, &l, is_write);

    if (!memory_access_is_direct(mr, is_write)) {