UBI: fix error path in create_vtbl()
[linux-2.6-block.git] / drivers / mtd / ubi / vtbl.c
index 83236c31c89232a0a944558271681da7bfd31064..9926f1f9aad8d30bedb790be5fbf92d4aebab620 100644 (file)
@@ -317,13 +317,15 @@ retry:
        return err;
 
 write_error:
-       /* 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);
-       kfree(new_seb);
-       if (!err)
+       if (err == -EIO && ++tries <= 5) {
+               /*
+                * Probably this physical eraseblock went bad, try to pick
+                * another one.
+                */
+               list_add_tail(&new_seb->u.list, &si->corr);
                goto retry;
+       }
+       kfree(new_seb);
 out_free:
        ubi_free_vid_hdr(ubi, vid_hdr);
        return err;