}
        }
 
+       if (ubi->avail_pebs < EBA_RESERVED_PEBS) {
+               ubi_err("no enough physical eraseblocks (%d, need %d)",
+                       ubi->avail_pebs, EBA_RESERVED_PEBS);
+               err = -ENOSPC;
+               goto out_free;
+       }
+       ubi->avail_pebs -= EBA_RESERVED_PEBS;
+       ubi->rsvd_pebs += EBA_RESERVED_PEBS;
+
        if (ubi->bad_allowed) {
                ubi_calculate_reserved(ubi);
 
                ubi->rsvd_pebs  += ubi->beb_rsvd_pebs;
        }
 
-       if (ubi->avail_pebs < EBA_RESERVED_PEBS) {
-               ubi_err("no enough physical eraseblocks (%d, need %d)",
-                       ubi->avail_pebs, EBA_RESERVED_PEBS);
-               err = -ENOSPC;
-               goto out_free;
-       }
-       ubi->avail_pebs -= EBA_RESERVED_PEBS;
-       ubi->rsvd_pebs += EBA_RESERVED_PEBS;
-
        dbg_eba("EBA unit is initialized");
        return 0;