*/
 static int erase_block(struct ubi_device *ubi, struct ubi_wl_entry *e)
 {
-       int ret;
+       int err;
        struct ubi_ec_hdr *ec_hdr;
-       long long ec;
+       long long ec = e->ec;
 
        ec_hdr = kzalloc(ubi->ec_hdr_alsize, GFP_KERNEL);
        if (!ec_hdr)
                return -ENOMEM;
 
-       ret = ubi_io_read_ec_hdr(ubi, e->pnum, ec_hdr, 0);
-       if (ret < 0)
-               goto out;
-       else if (ret && ret != UBI_IO_BITFLIPS) {
-               ret = -EINVAL;
-               goto out;
-       }
-
-       ret = ubi_io_sync_erase(ubi, e->pnum, 0);
-       if (ret < 0)
+       err = ubi_io_sync_erase(ubi, e->pnum, 0);
+       if (err < 0)
                goto out;
 
-       ec = be64_to_cpu(ec_hdr->ec);
-       ec += ret;
+       ec += err;
        if (ec > UBI_MAX_ERASECOUNTER) {
-               ret = -EINVAL;
+               err = -EINVAL;
                goto out;
        }
 
        ec_hdr->ec = cpu_to_be64(ec);
-       ret = ubi_io_write_ec_hdr(ubi, e->pnum, ec_hdr);
-       if (ret < 0)
+       err = ubi_io_write_ec_hdr(ubi, e->pnum, ec_hdr);
+       if (err < 0)
                goto out;
 
        e->ec = ec;
 
 out:
        kfree(ec_hdr);
-       return ret;
+       return err;
 }
 
 /**