• Richard Weinberger's avatar
    UBI: Fastmap: Fix race after ubi_wl_get_peb() · 8fb2a514
    Richard Weinberger authored
    ubi_wl_get_peb() returns a fresh PEB which can be used by
    user of UBI. Due to the pool logic fastmap will correctly
    map this PEB upon attach time because it will be scanned.
    
    If a new fastmap is written (due to heavy parallel io)
    while the before the fresh PEB is assigned to the EBA table
    it will not be scanned as it is no longer in the pool.
    So, the race window exists between ubi_wl_get_peb()
    and the EBA table assignment.
    We have to make sure that no new fastmap can be written
    while that.
    
    To ensure that ubi_wl_get_peb() will grab ubi->fm_sem in read mode
    and the user of ubi_wl_get_peb() has to release it after the PEB
    got assigned.
    Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
    8fb2a514
eba.c 40.1 KB