diff --git a/[refs] b/[refs] index 4947530c6e0d..181551bffa72 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 341e1a0cf2d8965c8b2f7941a6b2f2c2170df469 +refs/heads/master: c4e90ec0134d7bedebbe3fe58ed5d431293886d4 diff --git a/trunk/drivers/mtd/ubi/vtbl.c b/trunk/drivers/mtd/ubi/vtbl.c index b6fd6bbd941e..83236c31c892 100644 --- a/trunk/drivers/mtd/ubi/vtbl.c +++ b/trunk/drivers/mtd/ubi/vtbl.c @@ -317,14 +317,13 @@ static int create_vtbl(const struct ubi_device *ubi, struct ubi_scan_info *si, return err; write_error: - kfree(new_seb); - /* May be this physical eraseblock went bad, try to pick another one */ - if (++tries <= 5) { + /* Maybe this physical eraseblock went bad, try to pick another one */ + if (++tries <= 5) err = ubi_scan_add_to_list(si, new_seb->pnum, new_seb->ec, &si->corr); - if (!err) - goto retry; - } + kfree(new_seb); + if (!err) + goto retry; out_free: ubi_free_vid_hdr(ubi, vid_hdr); return err;