1 /* 2 * Copyright (c) International Business Machines Corp., 2006 3 * 4 * SPDX-License-Identifier: GPL-2.0+ 5 * 6 * Author: Artem Bityutskiy (Битюцкий Артём) 7 */ 8 9 /* 10 * UBI attaching sub-system. 11 * 12 * This sub-system is responsible for attaching MTD devices and it also 13 * implements flash media scanning. 14 * 15 * The attaching information is represented by a &struct ubi_attach_info' 16 * object. Information about volumes is represented by &struct ubi_ainf_volume 17 * objects which are kept in volume RB-tree with root at the @volumes field. 18 * The RB-tree is indexed by the volume ID. 19 * 20 * Logical eraseblocks are represented by &struct ubi_ainf_peb objects. These 21 * objects are kept in per-volume RB-trees with the root at the corresponding 22 * &struct ubi_ainf_volume object. To put it differently, we keep an RB-tree of 23 * per-volume objects and each of these objects is the root of RB-tree of 24 * per-LEB objects. 25 * 26 * Corrupted physical eraseblocks are put to the @corr list, free physical 27 * eraseblocks are put to the @free list and the physical eraseblock to be 28 * erased are put to the @erase list. 29 * 30 * About corruptions 31 * ~~~~~~~~~~~~~~~~~ 32 * 33 * UBI protects EC and VID headers with CRC-32 checksums, so it can detect 34 * whether the headers are corrupted or not. Sometimes UBI also protects the 35 * data with CRC-32, e.g., when it executes the atomic LEB change operation, or 36 * when it moves the contents of a PEB for wear-leveling purposes. 37 * 38 * UBI tries to distinguish between 2 types of corruptions. 39 * 40 * 1. Corruptions caused by power cuts. These are expected corruptions and UBI 41 * tries to handle them gracefully, without printing too many warnings and 42 * error messages. The idea is that we do not lose important data in these 43 * cases - we may lose only the data which were being written to the media just 44 * before the power cut happened, and the upper layers (e.g., UBIFS) are 45 * supposed to handle such data losses (e.g., by using the FS journal). 46 * 47 * When UBI detects a corruption (CRC-32 mismatch) in a PEB, and it looks like 48 * the reason is a power cut, UBI puts this PEB to the @erase list, and all 49 * PEBs in the @erase list are scheduled for erasure later. 50 * 51 * 2. Unexpected corruptions which are not caused by power cuts. During 52 * attaching, such PEBs are put to the @corr list and UBI preserves them. 53 * Obviously, this lessens the amount of available PEBs, and if at some point 54 * UBI runs out of free PEBs, it switches to R/O mode. UBI also loudly informs 55 * about such PEBs every time the MTD device is attached. 56 * 57 * However, it is difficult to reliably distinguish between these types of 58 * corruptions and UBI's strategy is as follows (in case of attaching by 59 * scanning). UBI assumes corruption type 2 if the VID header is corrupted and 60 * the data area does not contain all 0xFFs, and there were no bit-flips or 61 * integrity errors (e.g., ECC errors in case of NAND) while reading the data 62 * area. Otherwise UBI assumes corruption type 1. So the decision criteria 63 * are as follows. 64 * o If the data area contains only 0xFFs, there are no data, and it is safe 65 * to just erase this PEB - this is corruption type 1. 66 * o If the data area has bit-flips or data integrity errors (ECC errors on 67 * NAND), it is probably a PEB which was being erased when power cut 68 * happened, so this is corruption type 1. However, this is just a guess, 69 * which might be wrong. 70 * o Otherwise this is corruption type 2. 71 */ 72 73 #define __UBOOT__ 74 #ifndef __UBOOT__ 75 #include <linux/err.h> 76 #include <linux/slab.h> 77 #include <linux/crc32.h> 78 #include <linux/random.h> 79 #else 80 #include <div64.h> 81 #include <linux/err.h> 82 #endif 83 84 #include <linux/math64.h> 85 86 #include <ubi_uboot.h> 87 #include "ubi.h" 88 89 static int self_check_ai(struct ubi_device *ubi, struct ubi_attach_info *ai); 90 91 /* Temporary variables used during scanning */ 92 static struct ubi_ec_hdr *ech; 93 static struct ubi_vid_hdr *vidh; 94 95 /** 96 * add_to_list - add physical eraseblock to a list. 97 * @ai: attaching information 98 * @pnum: physical eraseblock number to add 99 * @vol_id: the last used volume id for the PEB 100 * @lnum: the last used LEB number for the PEB 101 * @ec: erase counter of the physical eraseblock 102 * @to_head: if not zero, add to the head of the list 103 * @list: the list to add to 104 * 105 * This function allocates a 'struct ubi_ainf_peb' object for physical 106 * eraseblock @pnum and adds it to the "free", "erase", or "alien" lists. 107 * It stores the @lnum and @vol_id alongside, which can both be 108 * %UBI_UNKNOWN if they are not available, not readable, or not assigned. 109 * If @to_head is not zero, PEB will be added to the head of the list, which 110 * basically means it will be processed first later. E.g., we add corrupted 111 * PEBs (corrupted due to power cuts) to the head of the erase list to make 112 * sure we erase them first and get rid of corruptions ASAP. This function 113 * returns zero in case of success and a negative error code in case of 114 * failure. 115 */ 116 static int add_to_list(struct ubi_attach_info *ai, int pnum, int vol_id, 117 int lnum, int ec, int to_head, struct list_head *list) 118 { 119 struct ubi_ainf_peb *aeb; 120 121 if (list == &ai->free) { 122 dbg_bld("add to free: PEB %d, EC %d", pnum, ec); 123 } else if (list == &ai->erase) { 124 dbg_bld("add to erase: PEB %d, EC %d", pnum, ec); 125 } else if (list == &ai->alien) { 126 dbg_bld("add to alien: PEB %d, EC %d", pnum, ec); 127 ai->alien_peb_count += 1; 128 } else 129 BUG(); 130 131 aeb = kmem_cache_alloc(ai->aeb_slab_cache, GFP_KERNEL); 132 if (!aeb) 133 return -ENOMEM; 134 135 aeb->pnum = pnum; 136 aeb->vol_id = vol_id; 137 aeb->lnum = lnum; 138 aeb->ec = ec; 139 if (to_head) 140 list_add(&aeb->u.list, list); 141 else 142 list_add_tail(&aeb->u.list, list); 143 return 0; 144 } 145 146 /** 147 * add_corrupted - add a corrupted physical eraseblock. 148 * @ai: attaching information 149 * @pnum: physical eraseblock number to add 150 * @ec: erase counter of the physical eraseblock 151 * 152 * This function allocates a 'struct ubi_ainf_peb' object for a corrupted 153 * physical eraseblock @pnum and adds it to the 'corr' list. The corruption 154 * was presumably not caused by a power cut. Returns zero in case of success 155 * and a negative error code in case of failure. 156 */ 157 static int add_corrupted(struct ubi_attach_info *ai, int pnum, int ec) 158 { 159 struct ubi_ainf_peb *aeb; 160 161 dbg_bld("add to corrupted: PEB %d, EC %d", pnum, ec); 162 163 aeb = kmem_cache_alloc(ai->aeb_slab_cache, GFP_KERNEL); 164 if (!aeb) 165 return -ENOMEM; 166 167 ai->corr_peb_count += 1; 168 aeb->pnum = pnum; 169 aeb->ec = ec; 170 list_add(&aeb->u.list, &ai->corr); 171 return 0; 172 } 173 174 /** 175 * validate_vid_hdr - check volume identifier header. 176 * @vid_hdr: the volume identifier header to check 177 * @av: information about the volume this logical eraseblock belongs to 178 * @pnum: physical eraseblock number the VID header came from 179 * 180 * This function checks that data stored in @vid_hdr is consistent. Returns 181 * non-zero if an inconsistency was found and zero if not. 182 * 183 * Note, UBI does sanity check of everything it reads from the flash media. 184 * Most of the checks are done in the I/O sub-system. Here we check that the 185 * information in the VID header is consistent to the information in other VID 186 * headers of the same volume. 187 */ 188 static int validate_vid_hdr(const struct ubi_vid_hdr *vid_hdr, 189 const struct ubi_ainf_volume *av, int pnum) 190 { 191 int vol_type = vid_hdr->vol_type; 192 int vol_id = be32_to_cpu(vid_hdr->vol_id); 193 int used_ebs = be32_to_cpu(vid_hdr->used_ebs); 194 int data_pad = be32_to_cpu(vid_hdr->data_pad); 195 196 if (av->leb_count != 0) { 197 int av_vol_type; 198 199 /* 200 * This is not the first logical eraseblock belonging to this 201 * volume. Ensure that the data in its VID header is consistent 202 * to the data in previous logical eraseblock headers. 203 */ 204 205 if (vol_id != av->vol_id) { 206 ubi_err("inconsistent vol_id"); 207 goto bad; 208 } 209 210 if (av->vol_type == UBI_STATIC_VOLUME) 211 av_vol_type = UBI_VID_STATIC; 212 else 213 av_vol_type = UBI_VID_DYNAMIC; 214 215 if (vol_type != av_vol_type) { 216 ubi_err("inconsistent vol_type"); 217 goto bad; 218 } 219 220 if (used_ebs != av->used_ebs) { 221 ubi_err("inconsistent used_ebs"); 222 goto bad; 223 } 224 225 if (data_pad != av->data_pad) { 226 ubi_err("inconsistent data_pad"); 227 goto bad; 228 } 229 } 230 231 return 0; 232 233 bad: 234 ubi_err("inconsistent VID header at PEB %d", pnum); 235 ubi_dump_vid_hdr(vid_hdr); 236 ubi_dump_av(av); 237 return -EINVAL; 238 } 239 240 /** 241 * add_volume - add volume to the attaching information. 242 * @ai: attaching information 243 * @vol_id: ID of the volume to add 244 * @pnum: physical eraseblock number 245 * @vid_hdr: volume identifier header 246 * 247 * If the volume corresponding to the @vid_hdr logical eraseblock is already 248 * present in the attaching information, this function does nothing. Otherwise 249 * it adds corresponding volume to the attaching information. Returns a pointer 250 * to the allocated "av" object in case of success and a negative error code in 251 * case of failure. 252 */ 253 static struct ubi_ainf_volume *add_volume(struct ubi_attach_info *ai, 254 int vol_id, int pnum, 255 const struct ubi_vid_hdr *vid_hdr) 256 { 257 struct ubi_ainf_volume *av; 258 struct rb_node **p = &ai->volumes.rb_node, *parent = NULL; 259 260 ubi_assert(vol_id == be32_to_cpu(vid_hdr->vol_id)); 261 262 /* Walk the volume RB-tree to look if this volume is already present */ 263 while (*p) { 264 parent = *p; 265 av = rb_entry(parent, struct ubi_ainf_volume, rb); 266 267 if (vol_id == av->vol_id) 268 return av; 269 270 if (vol_id > av->vol_id) 271 p = &(*p)->rb_left; 272 else 273 p = &(*p)->rb_right; 274 } 275 276 /* The volume is absent - add it */ 277 av = kmalloc(sizeof(struct ubi_ainf_volume), GFP_KERNEL); 278 if (!av) 279 return ERR_PTR(-ENOMEM); 280 281 av->highest_lnum = av->leb_count = 0; 282 av->vol_id = vol_id; 283 av->root = RB_ROOT; 284 av->used_ebs = be32_to_cpu(vid_hdr->used_ebs); 285 av->data_pad = be32_to_cpu(vid_hdr->data_pad); 286 av->compat = vid_hdr->compat; 287 av->vol_type = vid_hdr->vol_type == UBI_VID_DYNAMIC ? UBI_DYNAMIC_VOLUME 288 : UBI_STATIC_VOLUME; 289 if (vol_id > ai->highest_vol_id) 290 ai->highest_vol_id = vol_id; 291 292 rb_link_node(&av->rb, parent, p); 293 rb_insert_color(&av->rb, &ai->volumes); 294 ai->vols_found += 1; 295 dbg_bld("added volume %d", vol_id); 296 return av; 297 } 298 299 /** 300 * ubi_compare_lebs - find out which logical eraseblock is newer. 301 * @ubi: UBI device description object 302 * @aeb: first logical eraseblock to compare 303 * @pnum: physical eraseblock number of the second logical eraseblock to 304 * compare 305 * @vid_hdr: volume identifier header of the second logical eraseblock 306 * 307 * This function compares 2 copies of a LEB and informs which one is newer. In 308 * case of success this function returns a positive value, in case of failure, a 309 * negative error code is returned. The success return codes use the following 310 * bits: 311 * o bit 0 is cleared: the first PEB (described by @aeb) is newer than the 312 * second PEB (described by @pnum and @vid_hdr); 313 * o bit 0 is set: the second PEB is newer; 314 * o bit 1 is cleared: no bit-flips were detected in the newer LEB; 315 * o bit 1 is set: bit-flips were detected in the newer LEB; 316 * o bit 2 is cleared: the older LEB is not corrupted; 317 * o bit 2 is set: the older LEB is corrupted. 318 */ 319 int ubi_compare_lebs(struct ubi_device *ubi, const struct ubi_ainf_peb *aeb, 320 int pnum, const struct ubi_vid_hdr *vid_hdr) 321 { 322 int len, err, second_is_newer, bitflips = 0, corrupted = 0; 323 uint32_t data_crc, crc; 324 struct ubi_vid_hdr *vh = NULL; 325 unsigned long long sqnum2 = be64_to_cpu(vid_hdr->sqnum); 326 327 if (sqnum2 == aeb->sqnum) { 328 /* 329 * This must be a really ancient UBI image which has been 330 * created before sequence numbers support has been added. At 331 * that times we used 32-bit LEB versions stored in logical 332 * eraseblocks. That was before UBI got into mainline. We do not 333 * support these images anymore. Well, those images still work, 334 * but only if no unclean reboots happened. 335 */ 336 ubi_err("unsupported on-flash UBI format"); 337 return -EINVAL; 338 } 339 340 /* Obviously the LEB with lower sequence counter is older */ 341 second_is_newer = (sqnum2 > aeb->sqnum); 342 343 /* 344 * Now we know which copy is newer. If the copy flag of the PEB with 345 * newer version is not set, then we just return, otherwise we have to 346 * check data CRC. For the second PEB we already have the VID header, 347 * for the first one - we'll need to re-read it from flash. 348 * 349 * Note: this may be optimized so that we wouldn't read twice. 350 */ 351 352 if (second_is_newer) { 353 if (!vid_hdr->copy_flag) { 354 /* It is not a copy, so it is newer */ 355 dbg_bld("second PEB %d is newer, copy_flag is unset", 356 pnum); 357 return 1; 358 } 359 } else { 360 if (!aeb->copy_flag) { 361 /* It is not a copy, so it is newer */ 362 dbg_bld("first PEB %d is newer, copy_flag is unset", 363 pnum); 364 return bitflips << 1; 365 } 366 367 vh = ubi_zalloc_vid_hdr(ubi, GFP_KERNEL); 368 if (!vh) 369 return -ENOMEM; 370 371 pnum = aeb->pnum; 372 err = ubi_io_read_vid_hdr(ubi, pnum, vh, 0); 373 if (err) { 374 if (err == UBI_IO_BITFLIPS) 375 bitflips = 1; 376 else { 377 ubi_err("VID of PEB %d header is bad, but it was OK earlier, err %d", 378 pnum, err); 379 if (err > 0) 380 err = -EIO; 381 382 goto out_free_vidh; 383 } 384 } 385 386 vid_hdr = vh; 387 } 388 389 /* Read the data of the copy and check the CRC */ 390 391 len = be32_to_cpu(vid_hdr->data_size); 392 393 mutex_lock(&ubi->buf_mutex); 394 err = ubi_io_read_data(ubi, ubi->peb_buf, pnum, 0, len); 395 if (err && err != UBI_IO_BITFLIPS && !mtd_is_eccerr(err)) 396 goto out_unlock; 397 398 data_crc = be32_to_cpu(vid_hdr->data_crc); 399 crc = crc32(UBI_CRC32_INIT, ubi->peb_buf, len); 400 if (crc != data_crc) { 401 dbg_bld("PEB %d CRC error: calculated %#08x, must be %#08x", 402 pnum, crc, data_crc); 403 corrupted = 1; 404 bitflips = 0; 405 second_is_newer = !second_is_newer; 406 } else { 407 dbg_bld("PEB %d CRC is OK", pnum); 408 bitflips = !!err; 409 } 410 mutex_unlock(&ubi->buf_mutex); 411 412 ubi_free_vid_hdr(ubi, vh); 413 414 if (second_is_newer) 415 dbg_bld("second PEB %d is newer, copy_flag is set", pnum); 416 else 417 dbg_bld("first PEB %d is newer, copy_flag is set", pnum); 418 419 return second_is_newer | (bitflips << 1) | (corrupted << 2); 420 421 out_unlock: 422 mutex_unlock(&ubi->buf_mutex); 423 out_free_vidh: 424 ubi_free_vid_hdr(ubi, vh); 425 return err; 426 } 427 428 /** 429 * ubi_add_to_av - add used physical eraseblock to the attaching information. 430 * @ubi: UBI device description object 431 * @ai: attaching information 432 * @pnum: the physical eraseblock number 433 * @ec: erase counter 434 * @vid_hdr: the volume identifier header 435 * @bitflips: if bit-flips were detected when this physical eraseblock was read 436 * 437 * This function adds information about a used physical eraseblock to the 438 * 'used' tree of the corresponding volume. The function is rather complex 439 * because it has to handle cases when this is not the first physical 440 * eraseblock belonging to the same logical eraseblock, and the newer one has 441 * to be picked, while the older one has to be dropped. This function returns 442 * zero in case of success and a negative error code in case of failure. 443 */ 444 int ubi_add_to_av(struct ubi_device *ubi, struct ubi_attach_info *ai, int pnum, 445 int ec, const struct ubi_vid_hdr *vid_hdr, int bitflips) 446 { 447 int err, vol_id, lnum; 448 unsigned long long sqnum; 449 struct ubi_ainf_volume *av; 450 struct ubi_ainf_peb *aeb; 451 struct rb_node **p, *parent = NULL; 452 453 vol_id = be32_to_cpu(vid_hdr->vol_id); 454 lnum = be32_to_cpu(vid_hdr->lnum); 455 sqnum = be64_to_cpu(vid_hdr->sqnum); 456 457 dbg_bld("PEB %d, LEB %d:%d, EC %d, sqnum %llu, bitflips %d", 458 pnum, vol_id, lnum, ec, sqnum, bitflips); 459 460 av = add_volume(ai, vol_id, pnum, vid_hdr); 461 if (IS_ERR(av)) 462 return PTR_ERR(av); 463 464 if (ai->max_sqnum < sqnum) 465 ai->max_sqnum = sqnum; 466 467 /* 468 * Walk the RB-tree of logical eraseblocks of volume @vol_id to look 469 * if this is the first instance of this logical eraseblock or not. 470 */ 471 p = &av->root.rb_node; 472 while (*p) { 473 int cmp_res; 474 475 parent = *p; 476 aeb = rb_entry(parent, struct ubi_ainf_peb, u.rb); 477 if (lnum != aeb->lnum) { 478 if (lnum < aeb->lnum) 479 p = &(*p)->rb_left; 480 else 481 p = &(*p)->rb_right; 482 continue; 483 } 484 485 /* 486 * There is already a physical eraseblock describing the same 487 * logical eraseblock present. 488 */ 489 490 dbg_bld("this LEB already exists: PEB %d, sqnum %llu, EC %d", 491 aeb->pnum, aeb->sqnum, aeb->ec); 492 493 /* 494 * Make sure that the logical eraseblocks have different 495 * sequence numbers. Otherwise the image is bad. 496 * 497 * However, if the sequence number is zero, we assume it must 498 * be an ancient UBI image from the era when UBI did not have 499 * sequence numbers. We still can attach these images, unless 500 * there is a need to distinguish between old and new 501 * eraseblocks, in which case we'll refuse the image in 502 * 'ubi_compare_lebs()'. In other words, we attach old clean 503 * images, but refuse attaching old images with duplicated 504 * logical eraseblocks because there was an unclean reboot. 505 */ 506 if (aeb->sqnum == sqnum && sqnum != 0) { 507 ubi_err("two LEBs with same sequence number %llu", 508 sqnum); 509 ubi_dump_aeb(aeb, 0); 510 ubi_dump_vid_hdr(vid_hdr); 511 return -EINVAL; 512 } 513 514 /* 515 * Now we have to drop the older one and preserve the newer 516 * one. 517 */ 518 cmp_res = ubi_compare_lebs(ubi, aeb, pnum, vid_hdr); 519 if (cmp_res < 0) 520 return cmp_res; 521 522 if (cmp_res & 1) { 523 /* 524 * This logical eraseblock is newer than the one 525 * found earlier. 526 */ 527 err = validate_vid_hdr(vid_hdr, av, pnum); 528 if (err) 529 return err; 530 531 err = add_to_list(ai, aeb->pnum, aeb->vol_id, 532 aeb->lnum, aeb->ec, cmp_res & 4, 533 &ai->erase); 534 if (err) 535 return err; 536 537 aeb->ec = ec; 538 aeb->pnum = pnum; 539 aeb->vol_id = vol_id; 540 aeb->lnum = lnum; 541 aeb->scrub = ((cmp_res & 2) || bitflips); 542 aeb->copy_flag = vid_hdr->copy_flag; 543 aeb->sqnum = sqnum; 544 545 if (av->highest_lnum == lnum) 546 av->last_data_size = 547 be32_to_cpu(vid_hdr->data_size); 548 549 return 0; 550 } else { 551 /* 552 * This logical eraseblock is older than the one found 553 * previously. 554 */ 555 return add_to_list(ai, pnum, vol_id, lnum, ec, 556 cmp_res & 4, &ai->erase); 557 } 558 } 559 560 /* 561 * We've met this logical eraseblock for the first time, add it to the 562 * attaching information. 563 */ 564 565 err = validate_vid_hdr(vid_hdr, av, pnum); 566 if (err) 567 return err; 568 569 aeb = kmem_cache_alloc(ai->aeb_slab_cache, GFP_KERNEL); 570 if (!aeb) 571 return -ENOMEM; 572 573 aeb->ec = ec; 574 aeb->pnum = pnum; 575 aeb->vol_id = vol_id; 576 aeb->lnum = lnum; 577 aeb->scrub = bitflips; 578 aeb->copy_flag = vid_hdr->copy_flag; 579 aeb->sqnum = sqnum; 580 581 if (av->highest_lnum <= lnum) { 582 av->highest_lnum = lnum; 583 av->last_data_size = be32_to_cpu(vid_hdr->data_size); 584 } 585 586 av->leb_count += 1; 587 rb_link_node(&aeb->u.rb, parent, p); 588 rb_insert_color(&aeb->u.rb, &av->root); 589 return 0; 590 } 591 592 /** 593 * ubi_find_av - find volume in the attaching information. 594 * @ai: attaching information 595 * @vol_id: the requested volume ID 596 * 597 * This function returns a pointer to the volume description or %NULL if there 598 * are no data about this volume in the attaching information. 599 */ 600 struct ubi_ainf_volume *ubi_find_av(const struct ubi_attach_info *ai, 601 int vol_id) 602 { 603 struct ubi_ainf_volume *av; 604 struct rb_node *p = ai->volumes.rb_node; 605 606 while (p) { 607 av = rb_entry(p, struct ubi_ainf_volume, rb); 608 609 if (vol_id == av->vol_id) 610 return av; 611 612 if (vol_id > av->vol_id) 613 p = p->rb_left; 614 else 615 p = p->rb_right; 616 } 617 618 return NULL; 619 } 620 621 /** 622 * ubi_remove_av - delete attaching information about a volume. 623 * @ai: attaching information 624 * @av: the volume attaching information to delete 625 */ 626 void ubi_remove_av(struct ubi_attach_info *ai, struct ubi_ainf_volume *av) 627 { 628 struct rb_node *rb; 629 struct ubi_ainf_peb *aeb; 630 631 dbg_bld("remove attaching information about volume %d", av->vol_id); 632 633 while ((rb = rb_first(&av->root))) { 634 aeb = rb_entry(rb, struct ubi_ainf_peb, u.rb); 635 rb_erase(&aeb->u.rb, &av->root); 636 list_add_tail(&aeb->u.list, &ai->erase); 637 } 638 639 rb_erase(&av->rb, &ai->volumes); 640 kfree(av); 641 ai->vols_found -= 1; 642 } 643 644 /** 645 * early_erase_peb - erase a physical eraseblock. 646 * @ubi: UBI device description object 647 * @ai: attaching information 648 * @pnum: physical eraseblock number to erase; 649 * @ec: erase counter value to write (%UBI_UNKNOWN if it is unknown) 650 * 651 * This function erases physical eraseblock 'pnum', and writes the erase 652 * counter header to it. This function should only be used on UBI device 653 * initialization stages, when the EBA sub-system had not been yet initialized. 654 * This function returns zero in case of success and a negative error code in 655 * case of failure. 656 */ 657 static int early_erase_peb(struct ubi_device *ubi, 658 const struct ubi_attach_info *ai, int pnum, int ec) 659 { 660 int err; 661 struct ubi_ec_hdr *ec_hdr; 662 663 if ((long long)ec >= UBI_MAX_ERASECOUNTER) { 664 /* 665 * Erase counter overflow. Upgrade UBI and use 64-bit 666 * erase counters internally. 667 */ 668 ubi_err("erase counter overflow at PEB %d, EC %d", pnum, ec); 669 return -EINVAL; 670 } 671 672 ec_hdr = kzalloc(ubi->ec_hdr_alsize, GFP_KERNEL); 673 if (!ec_hdr) 674 return -ENOMEM; 675 676 ec_hdr->ec = cpu_to_be64(ec); 677 678 err = ubi_io_sync_erase(ubi, pnum, 0); 679 if (err < 0) 680 goto out_free; 681 682 err = ubi_io_write_ec_hdr(ubi, pnum, ec_hdr); 683 684 out_free: 685 kfree(ec_hdr); 686 return err; 687 } 688 689 /** 690 * ubi_early_get_peb - get a free physical eraseblock. 691 * @ubi: UBI device description object 692 * @ai: attaching information 693 * 694 * This function returns a free physical eraseblock. It is supposed to be 695 * called on the UBI initialization stages when the wear-leveling sub-system is 696 * not initialized yet. This function picks a physical eraseblocks from one of 697 * the lists, writes the EC header if it is needed, and removes it from the 698 * list. 699 * 700 * This function returns a pointer to the "aeb" of the found free PEB in case 701 * of success and an error code in case of failure. 702 */ 703 struct ubi_ainf_peb *ubi_early_get_peb(struct ubi_device *ubi, 704 struct ubi_attach_info *ai) 705 { 706 int err = 0; 707 struct ubi_ainf_peb *aeb, *tmp_aeb; 708 709 if (!list_empty(&ai->free)) { 710 aeb = list_entry(ai->free.next, struct ubi_ainf_peb, u.list); 711 list_del(&aeb->u.list); 712 dbg_bld("return free PEB %d, EC %d", aeb->pnum, aeb->ec); 713 return aeb; 714 } 715 716 /* 717 * We try to erase the first physical eraseblock from the erase list 718 * and pick it if we succeed, or try to erase the next one if not. And 719 * so forth. We don't want to take care about bad eraseblocks here - 720 * they'll be handled later. 721 */ 722 list_for_each_entry_safe(aeb, tmp_aeb, &ai->erase, u.list) { 723 if (aeb->ec == UBI_UNKNOWN) 724 aeb->ec = ai->mean_ec; 725 726 err = early_erase_peb(ubi, ai, aeb->pnum, aeb->ec+1); 727 if (err) 728 continue; 729 730 aeb->ec += 1; 731 list_del(&aeb->u.list); 732 dbg_bld("return PEB %d, EC %d", aeb->pnum, aeb->ec); 733 return aeb; 734 } 735 736 ubi_err("no free eraseblocks"); 737 return ERR_PTR(-ENOSPC); 738 } 739 740 /** 741 * check_corruption - check the data area of PEB. 742 * @ubi: UBI device description object 743 * @vid_hdr: the (corrupted) VID header of this PEB 744 * @pnum: the physical eraseblock number to check 745 * 746 * This is a helper function which is used to distinguish between VID header 747 * corruptions caused by power cuts and other reasons. If the PEB contains only 748 * 0xFF bytes in the data area, the VID header is most probably corrupted 749 * because of a power cut (%0 is returned in this case). Otherwise, it was 750 * probably corrupted for some other reasons (%1 is returned in this case). A 751 * negative error code is returned if a read error occurred. 752 * 753 * If the corruption reason was a power cut, UBI can safely erase this PEB. 754 * Otherwise, it should preserve it to avoid possibly destroying important 755 * information. 756 */ 757 static int check_corruption(struct ubi_device *ubi, struct ubi_vid_hdr *vid_hdr, 758 int pnum) 759 { 760 int err; 761 762 mutex_lock(&ubi->buf_mutex); 763 memset(ubi->peb_buf, 0x00, ubi->leb_size); 764 765 err = ubi_io_read(ubi, ubi->peb_buf, pnum, ubi->leb_start, 766 ubi->leb_size); 767 if (err == UBI_IO_BITFLIPS || mtd_is_eccerr(err)) { 768 /* 769 * Bit-flips or integrity errors while reading the data area. 770 * It is difficult to say for sure what type of corruption is 771 * this, but presumably a power cut happened while this PEB was 772 * erased, so it became unstable and corrupted, and should be 773 * erased. 774 */ 775 err = 0; 776 goto out_unlock; 777 } 778 779 if (err) 780 goto out_unlock; 781 782 if (ubi_check_pattern(ubi->peb_buf, 0xFF, ubi->leb_size)) 783 goto out_unlock; 784 785 ubi_err("PEB %d contains corrupted VID header, and the data does not contain all 0xFF", 786 pnum); 787 ubi_err("this may be a non-UBI PEB or a severe VID header corruption which requires manual inspection"); 788 ubi_dump_vid_hdr(vid_hdr); 789 pr_err("hexdump of PEB %d offset %d, length %d", 790 pnum, ubi->leb_start, ubi->leb_size); 791 ubi_dbg_print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_OFFSET, 32, 1, 792 ubi->peb_buf, ubi->leb_size, 1); 793 err = 1; 794 795 out_unlock: 796 mutex_unlock(&ubi->buf_mutex); 797 return err; 798 } 799 800 /** 801 * scan_peb - scan and process UBI headers of a PEB. 802 * @ubi: UBI device description object 803 * @ai: attaching information 804 * @pnum: the physical eraseblock number 805 * @vid: The volume ID of the found volume will be stored in this pointer 806 * @sqnum: The sqnum of the found volume will be stored in this pointer 807 * 808 * This function reads UBI headers of PEB @pnum, checks them, and adds 809 * information about this PEB to the corresponding list or RB-tree in the 810 * "attaching info" structure. Returns zero if the physical eraseblock was 811 * successfully handled and a negative error code in case of failure. 812 */ 813 static int scan_peb(struct ubi_device *ubi, struct ubi_attach_info *ai, 814 int pnum, int *vid, unsigned long long *sqnum) 815 { 816 long long uninitialized_var(ec); 817 int err, bitflips = 0, vol_id = -1, ec_err = 0; 818 819 dbg_bld("scan PEB %d", pnum); 820 821 /* Skip bad physical eraseblocks */ 822 err = ubi_io_is_bad(ubi, pnum); 823 if (err < 0) 824 return err; 825 else if (err) { 826 ai->bad_peb_count += 1; 827 return 0; 828 } 829 830 err = ubi_io_read_ec_hdr(ubi, pnum, ech, 0); 831 if (err < 0) 832 return err; 833 switch (err) { 834 case 0: 835 break; 836 case UBI_IO_BITFLIPS: 837 bitflips = 1; 838 break; 839 case UBI_IO_FF: 840 ai->empty_peb_count += 1; 841 return add_to_list(ai, pnum, UBI_UNKNOWN, UBI_UNKNOWN, 842 UBI_UNKNOWN, 0, &ai->erase); 843 case UBI_IO_FF_BITFLIPS: 844 ai->empty_peb_count += 1; 845 return add_to_list(ai, pnum, UBI_UNKNOWN, UBI_UNKNOWN, 846 UBI_UNKNOWN, 1, &ai->erase); 847 case UBI_IO_BAD_HDR_EBADMSG: 848 case UBI_IO_BAD_HDR: 849 /* 850 * We have to also look at the VID header, possibly it is not 851 * corrupted. Set %bitflips flag in order to make this PEB be 852 * moved and EC be re-created. 853 */ 854 ec_err = err; 855 ec = UBI_UNKNOWN; 856 bitflips = 1; 857 break; 858 default: 859 ubi_err("'ubi_io_read_ec_hdr()' returned unknown code %d", err); 860 return -EINVAL; 861 } 862 863 if (!ec_err) { 864 int image_seq; 865 866 /* Make sure UBI version is OK */ 867 if (ech->version != UBI_VERSION) { 868 ubi_err("this UBI version is %d, image version is %d", 869 UBI_VERSION, (int)ech->version); 870 return -EINVAL; 871 } 872 873 ec = be64_to_cpu(ech->ec); 874 if (ec > UBI_MAX_ERASECOUNTER) { 875 /* 876 * Erase counter overflow. The EC headers have 64 bits 877 * reserved, but we anyway make use of only 31 bit 878 * values, as this seems to be enough for any existing 879 * flash. Upgrade UBI and use 64-bit erase counters 880 * internally. 881 */ 882 ubi_err("erase counter overflow, max is %d", 883 UBI_MAX_ERASECOUNTER); 884 ubi_dump_ec_hdr(ech); 885 return -EINVAL; 886 } 887 888 /* 889 * Make sure that all PEBs have the same image sequence number. 890 * This allows us to detect situations when users flash UBI 891 * images incorrectly, so that the flash has the new UBI image 892 * and leftovers from the old one. This feature was added 893 * relatively recently, and the sequence number was always 894 * zero, because old UBI implementations always set it to zero. 895 * For this reasons, we do not panic if some PEBs have zero 896 * sequence number, while other PEBs have non-zero sequence 897 * number. 898 */ 899 image_seq = be32_to_cpu(ech->image_seq); 900 if (!ubi->image_seq) 901 ubi->image_seq = image_seq; 902 if (image_seq && ubi->image_seq != image_seq) { 903 ubi_err("bad image sequence number %d in PEB %d, expected %d", 904 image_seq, pnum, ubi->image_seq); 905 ubi_dump_ec_hdr(ech); 906 return -EINVAL; 907 } 908 } 909 910 /* OK, we've done with the EC header, let's look at the VID header */ 911 912 err = ubi_io_read_vid_hdr(ubi, pnum, vidh, 0); 913 if (err < 0) 914 return err; 915 switch (err) { 916 case 0: 917 break; 918 case UBI_IO_BITFLIPS: 919 bitflips = 1; 920 break; 921 case UBI_IO_BAD_HDR_EBADMSG: 922 if (ec_err == UBI_IO_BAD_HDR_EBADMSG) 923 /* 924 * Both EC and VID headers are corrupted and were read 925 * with data integrity error, probably this is a bad 926 * PEB, bit it is not marked as bad yet. This may also 927 * be a result of power cut during erasure. 928 */ 929 ai->maybe_bad_peb_count += 1; 930 case UBI_IO_BAD_HDR: 931 if (ec_err) 932 /* 933 * Both headers are corrupted. There is a possibility 934 * that this a valid UBI PEB which has corresponding 935 * LEB, but the headers are corrupted. However, it is 936 * impossible to distinguish it from a PEB which just 937 * contains garbage because of a power cut during erase 938 * operation. So we just schedule this PEB for erasure. 939 * 940 * Besides, in case of NOR flash, we deliberately 941 * corrupt both headers because NOR flash erasure is 942 * slow and can start from the end. 943 */ 944 err = 0; 945 else 946 /* 947 * The EC was OK, but the VID header is corrupted. We 948 * have to check what is in the data area. 949 */ 950 err = check_corruption(ubi, vidh, pnum); 951 952 if (err < 0) 953 return err; 954 else if (!err) 955 /* This corruption is caused by a power cut */ 956 err = add_to_list(ai, pnum, UBI_UNKNOWN, 957 UBI_UNKNOWN, ec, 1, &ai->erase); 958 else 959 /* This is an unexpected corruption */ 960 err = add_corrupted(ai, pnum, ec); 961 if (err) 962 return err; 963 goto adjust_mean_ec; 964 case UBI_IO_FF_BITFLIPS: 965 err = add_to_list(ai, pnum, UBI_UNKNOWN, UBI_UNKNOWN, 966 ec, 1, &ai->erase); 967 if (err) 968 return err; 969 goto adjust_mean_ec; 970 case UBI_IO_FF: 971 if (ec_err || bitflips) 972 err = add_to_list(ai, pnum, UBI_UNKNOWN, 973 UBI_UNKNOWN, ec, 1, &ai->erase); 974 else 975 err = add_to_list(ai, pnum, UBI_UNKNOWN, 976 UBI_UNKNOWN, ec, 0, &ai->free); 977 if (err) 978 return err; 979 goto adjust_mean_ec; 980 default: 981 ubi_err("'ubi_io_read_vid_hdr()' returned unknown code %d", 982 err); 983 return -EINVAL; 984 } 985 986 vol_id = be32_to_cpu(vidh->vol_id); 987 if (vid) 988 *vid = vol_id; 989 if (sqnum) 990 *sqnum = be64_to_cpu(vidh->sqnum); 991 if (vol_id > UBI_MAX_VOLUMES && vol_id != UBI_LAYOUT_VOLUME_ID) { 992 int lnum = be32_to_cpu(vidh->lnum); 993 994 /* Unsupported internal volume */ 995 switch (vidh->compat) { 996 case UBI_COMPAT_DELETE: 997 if (vol_id != UBI_FM_SB_VOLUME_ID 998 && vol_id != UBI_FM_DATA_VOLUME_ID) { 999 ubi_msg("\"delete\" compatible internal volume %d:%d found, will remove it", 1000 vol_id, lnum); 1001 } 1002 err = add_to_list(ai, pnum, vol_id, lnum, 1003 ec, 1, &ai->erase); 1004 if (err) 1005 return err; 1006 return 0; 1007 1008 case UBI_COMPAT_RO: 1009 ubi_msg("read-only compatible internal volume %d:%d found, switch to read-only mode", 1010 vol_id, lnum); 1011 ubi->ro_mode = 1; 1012 break; 1013 1014 case UBI_COMPAT_PRESERVE: 1015 ubi_msg("\"preserve\" compatible internal volume %d:%d found", 1016 vol_id, lnum); 1017 err = add_to_list(ai, pnum, vol_id, lnum, 1018 ec, 0, &ai->alien); 1019 if (err) 1020 return err; 1021 return 0; 1022 1023 case UBI_COMPAT_REJECT: 1024 ubi_err("incompatible internal volume %d:%d found", 1025 vol_id, lnum); 1026 return -EINVAL; 1027 } 1028 } 1029 1030 if (ec_err) 1031 ubi_warn("valid VID header but corrupted EC header at PEB %d", 1032 pnum); 1033 err = ubi_add_to_av(ubi, ai, pnum, ec, vidh, bitflips); 1034 if (err) 1035 return err; 1036 1037 adjust_mean_ec: 1038 if (!ec_err) { 1039 ai->ec_sum += ec; 1040 ai->ec_count += 1; 1041 if (ec > ai->max_ec) 1042 ai->max_ec = ec; 1043 if (ec < ai->min_ec) 1044 ai->min_ec = ec; 1045 } 1046 1047 return 0; 1048 } 1049 1050 /** 1051 * late_analysis - analyze the overall situation with PEB. 1052 * @ubi: UBI device description object 1053 * @ai: attaching information 1054 * 1055 * This is a helper function which takes a look what PEBs we have after we 1056 * gather information about all of them ("ai" is compete). It decides whether 1057 * the flash is empty and should be formatted of whether there are too many 1058 * corrupted PEBs and we should not attach this MTD device. Returns zero if we 1059 * should proceed with attaching the MTD device, and %-EINVAL if we should not. 1060 */ 1061 static int late_analysis(struct ubi_device *ubi, struct ubi_attach_info *ai) 1062 { 1063 struct ubi_ainf_peb *aeb; 1064 int max_corr, peb_count; 1065 1066 peb_count = ubi->peb_count - ai->bad_peb_count - ai->alien_peb_count; 1067 max_corr = peb_count / 20 ?: 8; 1068 1069 /* 1070 * Few corrupted PEBs is not a problem and may be just a result of 1071 * unclean reboots. However, many of them may indicate some problems 1072 * with the flash HW or driver. 1073 */ 1074 if (ai->corr_peb_count) { 1075 ubi_err("%d PEBs are corrupted and preserved", 1076 ai->corr_peb_count); 1077 pr_err("Corrupted PEBs are:"); 1078 list_for_each_entry(aeb, &ai->corr, u.list) 1079 pr_cont(" %d", aeb->pnum); 1080 pr_cont("\n"); 1081 1082 /* 1083 * If too many PEBs are corrupted, we refuse attaching, 1084 * otherwise, only print a warning. 1085 */ 1086 if (ai->corr_peb_count >= max_corr) { 1087 ubi_err("too many corrupted PEBs, refusing"); 1088 return -EINVAL; 1089 } 1090 } 1091 1092 if (ai->empty_peb_count + ai->maybe_bad_peb_count == peb_count) { 1093 /* 1094 * All PEBs are empty, or almost all - a couple PEBs look like 1095 * they may be bad PEBs which were not marked as bad yet. 1096 * 1097 * This piece of code basically tries to distinguish between 1098 * the following situations: 1099 * 1100 * 1. Flash is empty, but there are few bad PEBs, which are not 1101 * marked as bad so far, and which were read with error. We 1102 * want to go ahead and format this flash. While formatting, 1103 * the faulty PEBs will probably be marked as bad. 1104 * 1105 * 2. Flash contains non-UBI data and we do not want to format 1106 * it and destroy possibly important information. 1107 */ 1108 if (ai->maybe_bad_peb_count <= 2) { 1109 ai->is_empty = 1; 1110 ubi_msg("empty MTD device detected"); 1111 get_random_bytes(&ubi->image_seq, 1112 sizeof(ubi->image_seq)); 1113 } else { 1114 ubi_err("MTD device is not UBI-formatted and possibly contains non-UBI data - refusing it"); 1115 return -EINVAL; 1116 } 1117 1118 } 1119 1120 return 0; 1121 } 1122 1123 /** 1124 * destroy_av - free volume attaching information. 1125 * @av: volume attaching information 1126 * @ai: attaching information 1127 * 1128 * This function destroys the volume attaching information. 1129 */ 1130 static void destroy_av(struct ubi_attach_info *ai, struct ubi_ainf_volume *av) 1131 { 1132 struct ubi_ainf_peb *aeb; 1133 struct rb_node *this = av->root.rb_node; 1134 1135 while (this) { 1136 if (this->rb_left) 1137 this = this->rb_left; 1138 else if (this->rb_right) 1139 this = this->rb_right; 1140 else { 1141 aeb = rb_entry(this, struct ubi_ainf_peb, u.rb); 1142 this = rb_parent(this); 1143 if (this) { 1144 if (this->rb_left == &aeb->u.rb) 1145 this->rb_left = NULL; 1146 else 1147 this->rb_right = NULL; 1148 } 1149 1150 kmem_cache_free(ai->aeb_slab_cache, aeb); 1151 } 1152 } 1153 kfree(av); 1154 } 1155 1156 /** 1157 * destroy_ai - destroy attaching information. 1158 * @ai: attaching information 1159 */ 1160 static void destroy_ai(struct ubi_attach_info *ai) 1161 { 1162 struct ubi_ainf_peb *aeb, *aeb_tmp; 1163 struct ubi_ainf_volume *av; 1164 struct rb_node *rb; 1165 1166 list_for_each_entry_safe(aeb, aeb_tmp, &ai->alien, u.list) { 1167 list_del(&aeb->u.list); 1168 kmem_cache_free(ai->aeb_slab_cache, aeb); 1169 } 1170 list_for_each_entry_safe(aeb, aeb_tmp, &ai->erase, u.list) { 1171 list_del(&aeb->u.list); 1172 kmem_cache_free(ai->aeb_slab_cache, aeb); 1173 } 1174 list_for_each_entry_safe(aeb, aeb_tmp, &ai->corr, u.list) { 1175 list_del(&aeb->u.list); 1176 kmem_cache_free(ai->aeb_slab_cache, aeb); 1177 } 1178 list_for_each_entry_safe(aeb, aeb_tmp, &ai->free, u.list) { 1179 list_del(&aeb->u.list); 1180 kmem_cache_free(ai->aeb_slab_cache, aeb); 1181 } 1182 1183 /* Destroy the volume RB-tree */ 1184 rb = ai->volumes.rb_node; 1185 while (rb) { 1186 if (rb->rb_left) 1187 rb = rb->rb_left; 1188 else if (rb->rb_right) 1189 rb = rb->rb_right; 1190 else { 1191 av = rb_entry(rb, struct ubi_ainf_volume, rb); 1192 1193 rb = rb_parent(rb); 1194 if (rb) { 1195 if (rb->rb_left == &av->rb) 1196 rb->rb_left = NULL; 1197 else 1198 rb->rb_right = NULL; 1199 } 1200 1201 destroy_av(ai, av); 1202 } 1203 } 1204 1205 if (ai->aeb_slab_cache) 1206 kmem_cache_destroy(ai->aeb_slab_cache); 1207 1208 kfree(ai); 1209 } 1210 1211 /** 1212 * scan_all - scan entire MTD device. 1213 * @ubi: UBI device description object 1214 * @ai: attach info object 1215 * @start: start scanning at this PEB 1216 * 1217 * This function does full scanning of an MTD device and returns complete 1218 * information about it in form of a "struct ubi_attach_info" object. In case 1219 * of failure, an error code is returned. 1220 */ 1221 static int scan_all(struct ubi_device *ubi, struct ubi_attach_info *ai, 1222 int start) 1223 { 1224 int err, pnum; 1225 struct rb_node *rb1, *rb2; 1226 struct ubi_ainf_volume *av; 1227 struct ubi_ainf_peb *aeb; 1228 1229 err = -ENOMEM; 1230 1231 ech = kzalloc(ubi->ec_hdr_alsize, GFP_KERNEL); 1232 if (!ech) 1233 return err; 1234 1235 vidh = ubi_zalloc_vid_hdr(ubi, GFP_KERNEL); 1236 if (!vidh) 1237 goto out_ech; 1238 1239 for (pnum = start; pnum < ubi->peb_count; pnum++) { 1240 cond_resched(); 1241 1242 dbg_gen("process PEB %d", pnum); 1243 err = scan_peb(ubi, ai, pnum, NULL, NULL); 1244 if (err < 0) 1245 goto out_vidh; 1246 } 1247 1248 ubi_msg("scanning is finished"); 1249 1250 /* Calculate mean erase counter */ 1251 if (ai->ec_count) 1252 ai->mean_ec = div_u64(ai->ec_sum, ai->ec_count); 1253 1254 err = late_analysis(ubi, ai); 1255 if (err) 1256 goto out_vidh; 1257 1258 /* 1259 * In case of unknown erase counter we use the mean erase counter 1260 * value. 1261 */ 1262 ubi_rb_for_each_entry(rb1, av, &ai->volumes, rb) { 1263 ubi_rb_for_each_entry(rb2, aeb, &av->root, u.rb) 1264 if (aeb->ec == UBI_UNKNOWN) 1265 aeb->ec = ai->mean_ec; 1266 } 1267 1268 list_for_each_entry(aeb, &ai->free, u.list) { 1269 if (aeb->ec == UBI_UNKNOWN) 1270 aeb->ec = ai->mean_ec; 1271 } 1272 1273 list_for_each_entry(aeb, &ai->corr, u.list) 1274 if (aeb->ec == UBI_UNKNOWN) 1275 aeb->ec = ai->mean_ec; 1276 1277 list_for_each_entry(aeb, &ai->erase, u.list) 1278 if (aeb->ec == UBI_UNKNOWN) 1279 aeb->ec = ai->mean_ec; 1280 1281 err = self_check_ai(ubi, ai); 1282 if (err) 1283 goto out_vidh; 1284 1285 ubi_free_vid_hdr(ubi, vidh); 1286 kfree(ech); 1287 1288 return 0; 1289 1290 out_vidh: 1291 ubi_free_vid_hdr(ubi, vidh); 1292 out_ech: 1293 kfree(ech); 1294 return err; 1295 } 1296 1297 #ifdef CONFIG_MTD_UBI_FASTMAP 1298 1299 /** 1300 * scan_fastmap - try to find a fastmap and attach from it. 1301 * @ubi: UBI device description object 1302 * @ai: attach info object 1303 * 1304 * Returns 0 on success, negative return values indicate an internal 1305 * error. 1306 * UBI_NO_FASTMAP denotes that no fastmap was found. 1307 * UBI_BAD_FASTMAP denotes that the found fastmap was invalid. 1308 */ 1309 static int scan_fast(struct ubi_device *ubi, struct ubi_attach_info *ai) 1310 { 1311 int err, pnum, fm_anchor = -1; 1312 unsigned long long max_sqnum = 0; 1313 1314 err = -ENOMEM; 1315 1316 ech = kzalloc(ubi->ec_hdr_alsize, GFP_KERNEL); 1317 if (!ech) 1318 goto out; 1319 1320 vidh = ubi_zalloc_vid_hdr(ubi, GFP_KERNEL); 1321 if (!vidh) 1322 goto out_ech; 1323 1324 for (pnum = 0; pnum < UBI_FM_MAX_START; pnum++) { 1325 int vol_id = -1; 1326 unsigned long long sqnum = -1; 1327 cond_resched(); 1328 1329 dbg_gen("process PEB %d", pnum); 1330 err = scan_peb(ubi, ai, pnum, &vol_id, &sqnum); 1331 if (err < 0) 1332 goto out_vidh; 1333 1334 if (vol_id == UBI_FM_SB_VOLUME_ID && sqnum > max_sqnum) { 1335 max_sqnum = sqnum; 1336 fm_anchor = pnum; 1337 } 1338 } 1339 1340 ubi_free_vid_hdr(ubi, vidh); 1341 kfree(ech); 1342 1343 if (fm_anchor < 0) 1344 return UBI_NO_FASTMAP; 1345 1346 return ubi_scan_fastmap(ubi, ai, fm_anchor); 1347 1348 out_vidh: 1349 ubi_free_vid_hdr(ubi, vidh); 1350 out_ech: 1351 kfree(ech); 1352 out: 1353 return err; 1354 } 1355 1356 #endif 1357 1358 static struct ubi_attach_info *alloc_ai(const char *slab_name) 1359 { 1360 struct ubi_attach_info *ai; 1361 1362 ai = kzalloc(sizeof(struct ubi_attach_info), GFP_KERNEL); 1363 if (!ai) 1364 return ai; 1365 1366 INIT_LIST_HEAD(&ai->corr); 1367 INIT_LIST_HEAD(&ai->free); 1368 INIT_LIST_HEAD(&ai->erase); 1369 INIT_LIST_HEAD(&ai->alien); 1370 ai->volumes = RB_ROOT; 1371 ai->aeb_slab_cache = kmem_cache_create(slab_name, 1372 sizeof(struct ubi_ainf_peb), 1373 0, 0, NULL); 1374 if (!ai->aeb_slab_cache) { 1375 kfree(ai); 1376 ai = NULL; 1377 } 1378 1379 return ai; 1380 } 1381 1382 /** 1383 * ubi_attach - attach an MTD device. 1384 * @ubi: UBI device descriptor 1385 * @force_scan: if set to non-zero attach by scanning 1386 * 1387 * This function returns zero in case of success and a negative error code in 1388 * case of failure. 1389 */ 1390 int ubi_attach(struct ubi_device *ubi, int force_scan) 1391 { 1392 int err; 1393 struct ubi_attach_info *ai; 1394 1395 ai = alloc_ai("ubi_aeb_slab_cache"); 1396 if (!ai) 1397 return -ENOMEM; 1398 1399 #ifdef CONFIG_MTD_UBI_FASTMAP 1400 /* On small flash devices we disable fastmap in any case. */ 1401 if ((int)mtd_div_by_eb(ubi->mtd->size, ubi->mtd) <= UBI_FM_MAX_START) { 1402 ubi->fm_disabled = 1; 1403 force_scan = 1; 1404 } 1405 1406 if (force_scan) 1407 err = scan_all(ubi, ai, 0); 1408 else { 1409 err = scan_fast(ubi, ai); 1410 if (err > 0) { 1411 if (err != UBI_NO_FASTMAP) { 1412 destroy_ai(ai); 1413 ai = alloc_ai("ubi_aeb_slab_cache2"); 1414 if (!ai) 1415 return -ENOMEM; 1416 1417 err = scan_all(ubi, ai, 0); 1418 } else { 1419 err = scan_all(ubi, ai, UBI_FM_MAX_START); 1420 } 1421 } 1422 } 1423 #else 1424 err = scan_all(ubi, ai, 0); 1425 #endif 1426 if (err) 1427 goto out_ai; 1428 1429 ubi->bad_peb_count = ai->bad_peb_count; 1430 ubi->good_peb_count = ubi->peb_count - ubi->bad_peb_count; 1431 ubi->corr_peb_count = ai->corr_peb_count; 1432 ubi->max_ec = ai->max_ec; 1433 ubi->mean_ec = ai->mean_ec; 1434 dbg_gen("max. sequence number: %llu", ai->max_sqnum); 1435 1436 err = ubi_read_volume_table(ubi, ai); 1437 if (err) 1438 goto out_ai; 1439 1440 err = ubi_wl_init(ubi, ai); 1441 if (err) 1442 goto out_vtbl; 1443 1444 err = ubi_eba_init(ubi, ai); 1445 if (err) 1446 goto out_wl; 1447 1448 #ifdef CONFIG_MTD_UBI_FASTMAP 1449 if (ubi->fm && ubi_dbg_chk_gen(ubi)) { 1450 struct ubi_attach_info *scan_ai; 1451 1452 scan_ai = alloc_ai("ubi_ckh_aeb_slab_cache"); 1453 if (!scan_ai) { 1454 err = -ENOMEM; 1455 goto out_wl; 1456 } 1457 1458 err = scan_all(ubi, scan_ai, 0); 1459 if (err) { 1460 destroy_ai(scan_ai); 1461 goto out_wl; 1462 } 1463 1464 err = self_check_eba(ubi, ai, scan_ai); 1465 destroy_ai(scan_ai); 1466 1467 if (err) 1468 goto out_wl; 1469 } 1470 #endif 1471 1472 destroy_ai(ai); 1473 return 0; 1474 1475 out_wl: 1476 ubi_wl_close(ubi); 1477 out_vtbl: 1478 ubi_free_internal_volumes(ubi); 1479 vfree(ubi->vtbl); 1480 out_ai: 1481 destroy_ai(ai); 1482 return err; 1483 } 1484 1485 /** 1486 * self_check_ai - check the attaching information. 1487 * @ubi: UBI device description object 1488 * @ai: attaching information 1489 * 1490 * This function returns zero if the attaching information is all right, and a 1491 * negative error code if not or if an error occurred. 1492 */ 1493 static int self_check_ai(struct ubi_device *ubi, struct ubi_attach_info *ai) 1494 { 1495 int pnum, err, vols_found = 0; 1496 struct rb_node *rb1, *rb2; 1497 struct ubi_ainf_volume *av; 1498 struct ubi_ainf_peb *aeb, *last_aeb; 1499 uint8_t *buf; 1500 1501 if (!ubi_dbg_chk_gen(ubi)) 1502 return 0; 1503 1504 /* 1505 * At first, check that attaching information is OK. 1506 */ 1507 ubi_rb_for_each_entry(rb1, av, &ai->volumes, rb) { 1508 int leb_count = 0; 1509 1510 cond_resched(); 1511 1512 vols_found += 1; 1513 1514 if (ai->is_empty) { 1515 ubi_err("bad is_empty flag"); 1516 goto bad_av; 1517 } 1518 1519 if (av->vol_id < 0 || av->highest_lnum < 0 || 1520 av->leb_count < 0 || av->vol_type < 0 || av->used_ebs < 0 || 1521 av->data_pad < 0 || av->last_data_size < 0) { 1522 ubi_err("negative values"); 1523 goto bad_av; 1524 } 1525 1526 if (av->vol_id >= UBI_MAX_VOLUMES && 1527 av->vol_id < UBI_INTERNAL_VOL_START) { 1528 ubi_err("bad vol_id"); 1529 goto bad_av; 1530 } 1531 1532 if (av->vol_id > ai->highest_vol_id) { 1533 ubi_err("highest_vol_id is %d, but vol_id %d is there", 1534 ai->highest_vol_id, av->vol_id); 1535 goto out; 1536 } 1537 1538 if (av->vol_type != UBI_DYNAMIC_VOLUME && 1539 av->vol_type != UBI_STATIC_VOLUME) { 1540 ubi_err("bad vol_type"); 1541 goto bad_av; 1542 } 1543 1544 if (av->data_pad > ubi->leb_size / 2) { 1545 ubi_err("bad data_pad"); 1546 goto bad_av; 1547 } 1548 1549 last_aeb = NULL; 1550 ubi_rb_for_each_entry(rb2, aeb, &av->root, u.rb) { 1551 cond_resched(); 1552 1553 last_aeb = aeb; 1554 leb_count += 1; 1555 1556 if (aeb->pnum < 0 || aeb->ec < 0) { 1557 ubi_err("negative values"); 1558 goto bad_aeb; 1559 } 1560 1561 if (aeb->ec < ai->min_ec) { 1562 ubi_err("bad ai->min_ec (%d), %d found", 1563 ai->min_ec, aeb->ec); 1564 goto bad_aeb; 1565 } 1566 1567 if (aeb->ec > ai->max_ec) { 1568 ubi_err("bad ai->max_ec (%d), %d found", 1569 ai->max_ec, aeb->ec); 1570 goto bad_aeb; 1571 } 1572 1573 if (aeb->pnum >= ubi->peb_count) { 1574 ubi_err("too high PEB number %d, total PEBs %d", 1575 aeb->pnum, ubi->peb_count); 1576 goto bad_aeb; 1577 } 1578 1579 if (av->vol_type == UBI_STATIC_VOLUME) { 1580 if (aeb->lnum >= av->used_ebs) { 1581 ubi_err("bad lnum or used_ebs"); 1582 goto bad_aeb; 1583 } 1584 } else { 1585 if (av->used_ebs != 0) { 1586 ubi_err("non-zero used_ebs"); 1587 goto bad_aeb; 1588 } 1589 } 1590 1591 if (aeb->lnum > av->highest_lnum) { 1592 ubi_err("incorrect highest_lnum or lnum"); 1593 goto bad_aeb; 1594 } 1595 } 1596 1597 if (av->leb_count != leb_count) { 1598 ubi_err("bad leb_count, %d objects in the tree", 1599 leb_count); 1600 goto bad_av; 1601 } 1602 1603 if (!last_aeb) 1604 continue; 1605 1606 aeb = last_aeb; 1607 1608 if (aeb->lnum != av->highest_lnum) { 1609 ubi_err("bad highest_lnum"); 1610 goto bad_aeb; 1611 } 1612 } 1613 1614 if (vols_found != ai->vols_found) { 1615 ubi_err("bad ai->vols_found %d, should be %d", 1616 ai->vols_found, vols_found); 1617 goto out; 1618 } 1619 1620 /* Check that attaching information is correct */ 1621 ubi_rb_for_each_entry(rb1, av, &ai->volumes, rb) { 1622 last_aeb = NULL; 1623 ubi_rb_for_each_entry(rb2, aeb, &av->root, u.rb) { 1624 int vol_type; 1625 1626 cond_resched(); 1627 1628 last_aeb = aeb; 1629 1630 err = ubi_io_read_vid_hdr(ubi, aeb->pnum, vidh, 1); 1631 if (err && err != UBI_IO_BITFLIPS) { 1632 ubi_err("VID header is not OK (%d)", err); 1633 if (err > 0) 1634 err = -EIO; 1635 return err; 1636 } 1637 1638 vol_type = vidh->vol_type == UBI_VID_DYNAMIC ? 1639 UBI_DYNAMIC_VOLUME : UBI_STATIC_VOLUME; 1640 if (av->vol_type != vol_type) { 1641 ubi_err("bad vol_type"); 1642 goto bad_vid_hdr; 1643 } 1644 1645 if (aeb->sqnum != be64_to_cpu(vidh->sqnum)) { 1646 ubi_err("bad sqnum %llu", aeb->sqnum); 1647 goto bad_vid_hdr; 1648 } 1649 1650 if (av->vol_id != be32_to_cpu(vidh->vol_id)) { 1651 ubi_err("bad vol_id %d", av->vol_id); 1652 goto bad_vid_hdr; 1653 } 1654 1655 if (av->compat != vidh->compat) { 1656 ubi_err("bad compat %d", vidh->compat); 1657 goto bad_vid_hdr; 1658 } 1659 1660 if (aeb->lnum != be32_to_cpu(vidh->lnum)) { 1661 ubi_err("bad lnum %d", aeb->lnum); 1662 goto bad_vid_hdr; 1663 } 1664 1665 if (av->used_ebs != be32_to_cpu(vidh->used_ebs)) { 1666 ubi_err("bad used_ebs %d", av->used_ebs); 1667 goto bad_vid_hdr; 1668 } 1669 1670 if (av->data_pad != be32_to_cpu(vidh->data_pad)) { 1671 ubi_err("bad data_pad %d", av->data_pad); 1672 goto bad_vid_hdr; 1673 } 1674 } 1675 1676 if (!last_aeb) 1677 continue; 1678 1679 if (av->highest_lnum != be32_to_cpu(vidh->lnum)) { 1680 ubi_err("bad highest_lnum %d", av->highest_lnum); 1681 goto bad_vid_hdr; 1682 } 1683 1684 if (av->last_data_size != be32_to_cpu(vidh->data_size)) { 1685 ubi_err("bad last_data_size %d", av->last_data_size); 1686 goto bad_vid_hdr; 1687 } 1688 } 1689 1690 /* 1691 * Make sure that all the physical eraseblocks are in one of the lists 1692 * or trees. 1693 */ 1694 buf = kzalloc(ubi->peb_count, GFP_KERNEL); 1695 if (!buf) 1696 return -ENOMEM; 1697 1698 for (pnum = 0; pnum < ubi->peb_count; pnum++) { 1699 err = ubi_io_is_bad(ubi, pnum); 1700 if (err < 0) { 1701 kfree(buf); 1702 return err; 1703 } else if (err) 1704 buf[pnum] = 1; 1705 } 1706 1707 ubi_rb_for_each_entry(rb1, av, &ai->volumes, rb) 1708 ubi_rb_for_each_entry(rb2, aeb, &av->root, u.rb) 1709 buf[aeb->pnum] = 1; 1710 1711 list_for_each_entry(aeb, &ai->free, u.list) 1712 buf[aeb->pnum] = 1; 1713 1714 list_for_each_entry(aeb, &ai->corr, u.list) 1715 buf[aeb->pnum] = 1; 1716 1717 list_for_each_entry(aeb, &ai->erase, u.list) 1718 buf[aeb->pnum] = 1; 1719 1720 list_for_each_entry(aeb, &ai->alien, u.list) 1721 buf[aeb->pnum] = 1; 1722 1723 err = 0; 1724 for (pnum = 0; pnum < ubi->peb_count; pnum++) 1725 if (!buf[pnum]) { 1726 ubi_err("PEB %d is not referred", pnum); 1727 err = 1; 1728 } 1729 1730 kfree(buf); 1731 if (err) 1732 goto out; 1733 return 0; 1734 1735 bad_aeb: 1736 ubi_err("bad attaching information about LEB %d", aeb->lnum); 1737 ubi_dump_aeb(aeb, 0); 1738 ubi_dump_av(av); 1739 goto out; 1740 1741 bad_av: 1742 ubi_err("bad attaching information about volume %d", av->vol_id); 1743 ubi_dump_av(av); 1744 goto out; 1745 1746 bad_vid_hdr: 1747 ubi_err("bad attaching information about volume %d", av->vol_id); 1748 ubi_dump_av(av); 1749 ubi_dump_vid_hdr(vidh); 1750 1751 out: 1752 dump_stack(); 1753 return -EINVAL; 1754 } 1755