• Sebastian Siewior's avatar
    mtd: ubi: fixup error correction in do_sync_erase() · 1a31b20c
    Sebastian Siewior authored
    Since fastmap we gained do_sync_erase(). This function can return an error
    and its error handling isn't obvious. First the memory allocation for
    struct ubi_work can fail and as such struct ubi_wl_entry is leaked.
    However if the memory allocation succeeds then the tail function takes
    care of the struct ubi_wl_entry. A free here could result in a double
    free.
    To make the error handling simpler, I split the tail function into one
    piece which does the work and another which frees the struct ubi_work
    which is passed as argument. As result do_sync_erase() can keep the
    struct on stack and we get rid of one error source.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 8199b901 ("UBI: Add fastmap support to the WL sub-system")
    Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
    1a31b20c
wl.c 49.3 KB