• Artem Bityutskiy's avatar
    UBI: fix corrupted PEB detection for NOR flash · 7ac760c2
    Artem Bityutskiy authored
    My new shiny code for corrupted PEB detection has NOR specific bug.
    We tread PEB as corrupted and preserve it, if
    
    1. EC header is OK.
    2. VID header is corrupted.
    3. data area is not "all 0xFFs"
    
    In case of NOR we have 'nor_erase_prepare()' quirk, which invalidates
    the headers before erasing the PEB. And we invalidate first the VID
    header, and then the EC header. So if a power cut happens after we have
    invalidated the VID header, but before we have invalidated the EC
    header, we end up with a PEB which satisfies the above 3 conditions,
    and the scanning code will treat it as corrupted, and will print
    scary warnings, wrongly.
    
    This patch fixes the issue by firt invalidating the EC header, then
    invalidating the VID header. In case of power cut inbetween, we still
    just lose the EC header, and UBI can deal with this situation gracefully.
    
    Thanks to Anatolij Gustschin <agust@denx.de> for tracking this down.
    Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
    Reported-by: default avatarAnatolij Gustschin <agust@denx.de>
    Tested-by: default avatarAnatolij Gustschin <agust@denx.de>
    7ac760c2
io.c 40.7 KB