1 // SPDX-License-Identifier: GPL-2.0+ 2 /* 3 * Copyright (c) International Business Machines Corp., 2006 4 * 5 * Author: Artem Bityutskiy (Битюцкий Артём) 6 */ 7 8 /* 9 * UBI attaching sub-system. 10 * 11 * This sub-system is responsible for attaching MTD devices and it also 12 * implements flash media scanning. 13 * 14 * The attaching information is represented by a &struct ubi_attach_info' 15 * object. Information about volumes is represented by &struct ubi_ainf_volume 16 * objects which are kept in volume RB-tree with root at the @volumes field. 17 * The RB-tree is indexed by the volume ID. 18 * 19 * Logical eraseblocks are represented by &struct ubi_ainf_peb objects. These 20 * objects are kept in per-volume RB-trees with the root at the corresponding 21 * &struct ubi_ainf_volume object. To put it differently, we keep an RB-tree of 22 * per-volume objects and each of these objects is the root of RB-tree of 23 * per-LEB objects. 24 * 25 * Corrupted physical eraseblocks are put to the @corr list, free physical 26 * eraseblocks are put to the @free list and the physical eraseblock to be 27 * erased are put to the @erase list. 28 * 29 * About corruptions 30 * ~~~~~~~~~~~~~~~~~ 31 * 32 * UBI protects EC and VID headers with CRC-32 checksums, so it can detect 33 * whether the headers are corrupted or not. Sometimes UBI also protects the 34 * data with CRC-32, e.g., when it executes the atomic LEB change operation, or 35 * when it moves the contents of a PEB for wear-leveling purposes. 36 * 37 * UBI tries to distinguish between 2 types of corruptions. 38 * 39 * 1. Corruptions caused by power cuts. These are expected corruptions and UBI 40 * tries to handle them gracefully, without printing too many warnings and 41 * error messages. The idea is that we do not lose important data in these 42 * cases - we may lose only the data which were being written to the media just 43 * before the power cut happened, and the upper layers (e.g., UBIFS) are 44 * supposed to handle such data losses (e.g., by using the FS journal). 45 * 46 * When UBI detects a corruption (CRC-32 mismatch) in a PEB, and it looks like 47 * the reason is a power cut, UBI puts this PEB to the @erase list, and all 48 * PEBs in the @erase list are scheduled for erasure later. 49 * 50 * 2. Unexpected corruptions which are not caused by power cuts. During 51 * attaching, such PEBs are put to the @corr list and UBI preserves them. 52 * Obviously, this lessens the amount of available PEBs, and if at some point 53 * UBI runs out of free PEBs, it switches to R/O mode. UBI also loudly informs 54 * about such PEBs every time the MTD device is attached. 55 * 56 * However, it is difficult to reliably distinguish between these types of 57 * corruptions and UBI's strategy is as follows (in case of attaching by 58 * scanning). UBI assumes corruption type 2 if the VID header is corrupted and 59 * the data area does not contain all 0xFFs, and there were no bit-flips or 60 * integrity errors (e.g., ECC errors in case of NAND) while reading the data 61 * area. Otherwise UBI assumes corruption type 1. So the decision criteria 62 * are as follows. 63 * o If the data area contains only 0xFFs, there are no data, and it is safe 64 * to just erase this PEB - this is corruption type 1. 65 * o If the data area has bit-flips or data integrity errors (ECC errors on 66 * NAND), it is probably a PEB which was being erased when power cut 67 * happened, so this is corruption type 1. However, this is just a guess, 68 * which might be wrong. 69 * o Otherwise this is corruption type 2. 70 */ 71 72 #ifndef __UBOOT__ 73 #include <linux/err.h> 74 #include <linux/slab.h> 75 #include <linux/crc32.h> 76 #include <linux/random.h> 77 #else 78 #include <div64.h> 79 #include <linux/err.h> 80 #endif 81 82 #include <linux/math64.h> 83 84 #include <ubi_uboot.h> 85 #include "ubi.h" 86 87 static int self_check_ai(struct ubi_device *ubi, struct ubi_attach_info *ai); 88 89 /* Temporary variables used during scanning */ 90 static struct ubi_ec_hdr *ech; 91 static struct ubi_vid_hdr *vidh; 92 93 /** 94 * add_to_list - add physical eraseblock to a list. 95 * @ai: attaching information 96 * @pnum: physical eraseblock number to add 97 * @vol_id: the last used volume id for the PEB 98 * @lnum: the last used LEB number for the PEB 99 * @ec: erase counter of the physical eraseblock 100 * @to_head: if not zero, add to the head of the list 101 * @list: the list to add to 102 * 103 * This function allocates a 'struct ubi_ainf_peb' object for physical 104 * eraseblock @pnum and adds it to the "free", "erase", or "alien" lists. 105 * It stores the @lnum and @vol_id alongside, which can both be 106 * %UBI_UNKNOWN if they are not available, not readable, or not assigned. 107 * If @to_head is not zero, PEB will be added to the head of the list, which 108 * basically means it will be processed first later. E.g., we add corrupted 109 * PEBs (corrupted due to power cuts) to the head of the erase list to make 110 * sure we erase them first and get rid of corruptions ASAP. This function 111 * returns zero in case of success and a negative error code in case of 112 * failure. 113 */ 114 static int add_to_list(struct ubi_attach_info *ai, int pnum, int vol_id, 115 int lnum, int ec, int to_head, struct list_head *list) 116 { 117 struct ubi_ainf_peb *aeb; 118 119 if (list == &ai->free) { 120 dbg_bld("add to free: PEB %d, EC %d", pnum, ec); 121 } else if (list == &ai->erase) { 122 dbg_bld("add to erase: PEB %d, EC %d", pnum, ec); 123 } else if (list == &ai->alien) { 124 dbg_bld("add to alien: PEB %d, EC %d", pnum, ec); 125 ai->alien_peb_count += 1; 126 } else 127 BUG(); 128 129 aeb = kmem_cache_alloc(ai->aeb_slab_cache, GFP_KERNEL); 130 if (!aeb) 131 return -ENOMEM; 132 133 aeb->pnum = pnum; 134 aeb->vol_id = vol_id; 135 aeb->lnum = lnum; 136 aeb->ec = ec; 137 if (to_head) 138 list_add(&aeb->u.list, list); 139 else 140 list_add_tail(&aeb->u.list, list); 141 return 0; 142 } 143 144 /** 145 * add_corrupted - add a corrupted physical eraseblock. 146 * @ai: attaching information 147 * @pnum: physical eraseblock number to add 148 * @ec: erase counter of the physical eraseblock 149 * 150 * This function allocates a 'struct ubi_ainf_peb' object for a corrupted 151 * physical eraseblock @pnum and adds it to the 'corr' list. The corruption 152 * was presumably not caused by a power cut. Returns zero in case of success 153 * and a negative error code in case of failure. 154 */ 155 static int add_corrupted(struct ubi_attach_info *ai, int pnum, int ec) 156 { 157 struct ubi_ainf_peb *aeb; 158 159 dbg_bld("add to corrupted: PEB %d, EC %d", pnum, ec); 160 161 aeb = kmem_cache_alloc(ai->aeb_slab_cache, GFP_KERNEL); 162 if (!aeb) 163 return -ENOMEM; 164 165 ai->corr_peb_count += 1; 166 aeb->pnum = pnum; 167 aeb->ec = ec; 168 list_add(&aeb->u.list, &ai->corr); 169 return 0; 170 } 171 172 /** 173 * validate_vid_hdr - check volume identifier header. 174 * @ubi: UBI device description object 175 * @vid_hdr: the volume identifier header to check 176 * @av: information about the volume this logical eraseblock belongs to 177 * @pnum: physical eraseblock number the VID header came from 178 * 179 * This function checks that data stored in @vid_hdr is consistent. Returns 180 * non-zero if an inconsistency was found and zero if not. 181 * 182 * Note, UBI does sanity check of everything it reads from the flash media. 183 * Most of the checks are done in the I/O sub-system. Here we check that the 184 * information in the VID header is consistent to the information in other VID 185 * headers of the same volume. 186 */ 187 static int validate_vid_hdr(const struct ubi_device *ubi, 188 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(ubi, "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(ubi, "inconsistent vol_type"); 217 goto bad; 218 } 219 220 if (used_ebs != av->used_ebs) { 221 ubi_err(ubi, "inconsistent used_ebs"); 222 goto bad; 223 } 224 225 if (data_pad != av->data_pad) { 226 ubi_err(ubi, "inconsistent data_pad"); 227 goto bad; 228 } 229 } 230 231 return 0; 232 233 bad: 234 ubi_err(ubi, "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(ubi, "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(ubi, "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(ubi, "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(ubi, 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(ubi, 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(ubi, "erase counter overflow at PEB %d, EC %d", 669 pnum, ec); 670 return -EINVAL; 671 } 672 673 ec_hdr = kzalloc(ubi->ec_hdr_alsize, GFP_KERNEL); 674 if (!ec_hdr) 675 return -ENOMEM; 676 677 ec_hdr->ec = cpu_to_be64(ec); 678 679 err = ubi_io_sync_erase(ubi, pnum, 0); 680 if (err < 0) 681 goto out_free; 682 683 err = ubi_io_write_ec_hdr(ubi, pnum, ec_hdr); 684 685 out_free: 686 kfree(ec_hdr); 687 return err; 688 } 689 690 /** 691 * ubi_early_get_peb - get a free physical eraseblock. 692 * @ubi: UBI device description object 693 * @ai: attaching information 694 * 695 * This function returns a free physical eraseblock. It is supposed to be 696 * called on the UBI initialization stages when the wear-leveling sub-system is 697 * not initialized yet. This function picks a physical eraseblocks from one of 698 * the lists, writes the EC header if it is needed, and removes it from the 699 * list. 700 * 701 * This function returns a pointer to the "aeb" of the found free PEB in case 702 * of success and an error code in case of failure. 703 */ 704 struct ubi_ainf_peb *ubi_early_get_peb(struct ubi_device *ubi, 705 struct ubi_attach_info *ai) 706 { 707 int err = 0; 708 struct ubi_ainf_peb *aeb, *tmp_aeb; 709 710 if (!list_empty(&ai->free)) { 711 aeb = list_entry(ai->free.next, struct ubi_ainf_peb, u.list); 712 list_del(&aeb->u.list); 713 dbg_bld("return free PEB %d, EC %d", aeb->pnum, aeb->ec); 714 return aeb; 715 } 716 717 /* 718 * We try to erase the first physical eraseblock from the erase list 719 * and pick it if we succeed, or try to erase the next one if not. And 720 * so forth. We don't want to take care about bad eraseblocks here - 721 * they'll be handled later. 722 */ 723 list_for_each_entry_safe(aeb, tmp_aeb, &ai->erase, u.list) { 724 if (aeb->ec == UBI_UNKNOWN) 725 aeb->ec = ai->mean_ec; 726 727 err = early_erase_peb(ubi, ai, aeb->pnum, aeb->ec+1); 728 if (err) 729 continue; 730 731 aeb->ec += 1; 732 list_del(&aeb->u.list); 733 dbg_bld("return PEB %d, EC %d", aeb->pnum, aeb->ec); 734 return aeb; 735 } 736 737 ubi_err(ubi, "no free eraseblocks"); 738 return ERR_PTR(-ENOSPC); 739 } 740 741 /** 742 * check_corruption - check the data area of PEB. 743 * @ubi: UBI device description object 744 * @vid_hdr: the (corrupted) VID header of this PEB 745 * @pnum: the physical eraseblock number to check 746 * 747 * This is a helper function which is used to distinguish between VID header 748 * corruptions caused by power cuts and other reasons. If the PEB contains only 749 * 0xFF bytes in the data area, the VID header is most probably corrupted 750 * because of a power cut (%0 is returned in this case). Otherwise, it was 751 * probably corrupted for some other reasons (%1 is returned in this case). A 752 * negative error code is returned if a read error occurred. 753 * 754 * If the corruption reason was a power cut, UBI can safely erase this PEB. 755 * Otherwise, it should preserve it to avoid possibly destroying important 756 * information. 757 */ 758 static int check_corruption(struct ubi_device *ubi, struct ubi_vid_hdr *vid_hdr, 759 int pnum) 760 { 761 int err; 762 763 mutex_lock(&ubi->buf_mutex); 764 memset(ubi->peb_buf, 0x00, ubi->leb_size); 765 766 err = ubi_io_read(ubi, ubi->peb_buf, pnum, ubi->leb_start, 767 ubi->leb_size); 768 if (err == UBI_IO_BITFLIPS || mtd_is_eccerr(err)) { 769 /* 770 * Bit-flips or integrity errors while reading the data area. 771 * It is difficult to say for sure what type of corruption is 772 * this, but presumably a power cut happened while this PEB was 773 * erased, so it became unstable and corrupted, and should be 774 * erased. 775 */ 776 err = 0; 777 goto out_unlock; 778 } 779 780 if (err) 781 goto out_unlock; 782 783 if (ubi_check_pattern(ubi->peb_buf, 0xFF, ubi->leb_size)) 784 goto out_unlock; 785 786 ubi_err(ubi, "PEB %d contains corrupted VID header, and the data does not contain all 0xFF", 787 pnum); 788 ubi_err(ubi, "this may be a non-UBI PEB or a severe VID header corruption which requires manual inspection"); 789 ubi_dump_vid_hdr(vid_hdr); 790 pr_err("hexdump of PEB %d offset %d, length %d", 791 pnum, ubi->leb_start, ubi->leb_size); 792 ubi_dbg_print_hex_dump("", DUMP_PREFIX_OFFSET, 32, 1, 793 ubi->peb_buf, ubi->leb_size, 1); 794 err = 1; 795 796 out_unlock: 797 mutex_unlock(&ubi->buf_mutex); 798 return err; 799 } 800 801 /** 802 * scan_peb - scan and process UBI headers of a PEB. 803 * @ubi: UBI device description object 804 * @ai: attaching information 805 * @pnum: the physical eraseblock number 806 * @vid: The volume ID of the found volume will be stored in this pointer 807 * @sqnum: The sqnum of the found volume will be stored in this pointer 808 * 809 * This function reads UBI headers of PEB @pnum, checks them, and adds 810 * information about this PEB to the corresponding list or RB-tree in the 811 * "attaching info" structure. Returns zero if the physical eraseblock was 812 * successfully handled and a negative error code in case of failure. 813 */ 814 static int scan_peb(struct ubi_device *ubi, struct ubi_attach_info *ai, 815 int pnum, int *vid, unsigned long long *sqnum) 816 { 817 long long uninitialized_var(ec); 818 int err, bitflips = 0, vol_id = -1, ec_err = 0; 819 820 dbg_bld("scan PEB %d", pnum); 821 822 /* Skip bad physical eraseblocks */ 823 err = ubi_io_is_bad(ubi, pnum); 824 if (err < 0) 825 return err; 826 else if (err) { 827 ai->bad_peb_count += 1; 828 return 0; 829 } 830 831 err = ubi_io_read_ec_hdr(ubi, pnum, ech, 0); 832 if (err < 0) 833 return err; 834 switch (err) { 835 case 0: 836 break; 837 case UBI_IO_BITFLIPS: 838 bitflips = 1; 839 break; 840 case UBI_IO_FF: 841 ai->empty_peb_count += 1; 842 return add_to_list(ai, pnum, UBI_UNKNOWN, UBI_UNKNOWN, 843 UBI_UNKNOWN, 0, &ai->erase); 844 case UBI_IO_FF_BITFLIPS: 845 ai->empty_peb_count += 1; 846 return add_to_list(ai, pnum, UBI_UNKNOWN, UBI_UNKNOWN, 847 UBI_UNKNOWN, 1, &ai->erase); 848 case UBI_IO_BAD_HDR_EBADMSG: 849 case UBI_IO_BAD_HDR: 850 /* 851 * We have to also look at the VID header, possibly it is not 852 * corrupted. Set %bitflips flag in order to make this PEB be 853 * moved and EC be re-created. 854 */ 855 ec_err = err; 856 ec = UBI_UNKNOWN; 857 bitflips = 1; 858 break; 859 default: 860 ubi_err(ubi, "'ubi_io_read_ec_hdr()' returned unknown code %d", 861 err); 862 return -EINVAL; 863 } 864 865 if (!ec_err) { 866 int image_seq; 867 868 /* Make sure UBI version is OK */ 869 if (ech->version != UBI_VERSION) { 870 ubi_err(ubi, "this UBI version is %d, image version is %d", 871 UBI_VERSION, (int)ech->version); 872 return -EINVAL; 873 } 874 875 ec = be64_to_cpu(ech->ec); 876 if (ec > UBI_MAX_ERASECOUNTER) { 877 /* 878 * Erase counter overflow. The EC headers have 64 bits 879 * reserved, but we anyway make use of only 31 bit 880 * values, as this seems to be enough for any existing 881 * flash. Upgrade UBI and use 64-bit erase counters 882 * internally. 883 */ 884 ubi_err(ubi, "erase counter overflow, max is %d", 885 UBI_MAX_ERASECOUNTER); 886 ubi_dump_ec_hdr(ech); 887 return -EINVAL; 888 } 889 890 /* 891 * Make sure that all PEBs have the same image sequence number. 892 * This allows us to detect situations when users flash UBI 893 * images incorrectly, so that the flash has the new UBI image 894 * and leftovers from the old one. This feature was added 895 * relatively recently, and the sequence number was always 896 * zero, because old UBI implementations always set it to zero. 897 * For this reasons, we do not panic if some PEBs have zero 898 * sequence number, while other PEBs have non-zero sequence 899 * number. 900 */ 901 image_seq = be32_to_cpu(ech->image_seq); 902 if (!ubi->image_seq) 903 ubi->image_seq = image_seq; 904 if (image_seq && ubi->image_seq != image_seq) { 905 ubi_err(ubi, "bad image sequence number %d in PEB %d, expected %d", 906 image_seq, pnum, ubi->image_seq); 907 ubi_dump_ec_hdr(ech); 908 return -EINVAL; 909 } 910 } 911 912 /* OK, we've done with the EC header, let's look at the VID header */ 913 914 err = ubi_io_read_vid_hdr(ubi, pnum, vidh, 0); 915 if (err < 0) 916 return err; 917 switch (err) { 918 case 0: 919 break; 920 case UBI_IO_BITFLIPS: 921 bitflips = 1; 922 break; 923 case UBI_IO_BAD_HDR_EBADMSG: 924 if (ec_err == UBI_IO_BAD_HDR_EBADMSG) 925 /* 926 * Both EC and VID headers are corrupted and were read 927 * with data integrity error, probably this is a bad 928 * PEB, bit it is not marked as bad yet. This may also 929 * be a result of power cut during erasure. 930 */ 931 ai->maybe_bad_peb_count += 1; 932 case UBI_IO_BAD_HDR: 933 if (ec_err) 934 /* 935 * Both headers are corrupted. There is a possibility 936 * that this a valid UBI PEB which has corresponding 937 * LEB, but the headers are corrupted. However, it is 938 * impossible to distinguish it from a PEB which just 939 * contains garbage because of a power cut during erase 940 * operation. So we just schedule this PEB for erasure. 941 * 942 * Besides, in case of NOR flash, we deliberately 943 * corrupt both headers because NOR flash erasure is 944 * slow and can start from the end. 945 */ 946 err = 0; 947 else 948 /* 949 * The EC was OK, but the VID header is corrupted. We 950 * have to check what is in the data area. 951 */ 952 err = check_corruption(ubi, vidh, pnum); 953 954 if (err < 0) 955 return err; 956 else if (!err) 957 /* This corruption is caused by a power cut */ 958 err = add_to_list(ai, pnum, UBI_UNKNOWN, 959 UBI_UNKNOWN, ec, 1, &ai->erase); 960 else 961 /* This is an unexpected corruption */ 962 err = add_corrupted(ai, pnum, ec); 963 if (err) 964 return err; 965 goto adjust_mean_ec; 966 case UBI_IO_FF_BITFLIPS: 967 err = add_to_list(ai, pnum, UBI_UNKNOWN, UBI_UNKNOWN, 968 ec, 1, &ai->erase); 969 if (err) 970 return err; 971 goto adjust_mean_ec; 972 case UBI_IO_FF: 973 if (ec_err || bitflips) 974 err = add_to_list(ai, pnum, UBI_UNKNOWN, 975 UBI_UNKNOWN, ec, 1, &ai->erase); 976 else 977 err = add_to_list(ai, pnum, UBI_UNKNOWN, 978 UBI_UNKNOWN, ec, 0, &ai->free); 979 if (err) 980 return err; 981 goto adjust_mean_ec; 982 default: 983 ubi_err(ubi, "'ubi_io_read_vid_hdr()' returned unknown code %d", 984 err); 985 return -EINVAL; 986 } 987 988 vol_id = be32_to_cpu(vidh->vol_id); 989 if (vid) 990 *vid = vol_id; 991 if (sqnum) 992 *sqnum = be64_to_cpu(vidh->sqnum); 993 if (vol_id > UBI_MAX_VOLUMES && vol_id != UBI_LAYOUT_VOLUME_ID) { 994 int lnum = be32_to_cpu(vidh->lnum); 995 996 /* Unsupported internal volume */ 997 switch (vidh->compat) { 998 case UBI_COMPAT_DELETE: 999 if (vol_id != UBI_FM_SB_VOLUME_ID 1000 && vol_id != UBI_FM_DATA_VOLUME_ID) { 1001 ubi_msg(ubi, "\"delete\" compatible internal volume %d:%d found, will remove it", 1002 vol_id, lnum); 1003 } 1004 err = add_to_list(ai, pnum, vol_id, lnum, 1005 ec, 1, &ai->erase); 1006 if (err) 1007 return err; 1008 return 0; 1009 1010 case UBI_COMPAT_RO: 1011 ubi_msg(ubi, "read-only compatible internal volume %d:%d found, switch to read-only mode", 1012 vol_id, lnum); 1013 ubi->ro_mode = 1; 1014 break; 1015 1016 case UBI_COMPAT_PRESERVE: 1017 ubi_msg(ubi, "\"preserve\" compatible internal volume %d:%d found", 1018 vol_id, lnum); 1019 err = add_to_list(ai, pnum, vol_id, lnum, 1020 ec, 0, &ai->alien); 1021 if (err) 1022 return err; 1023 return 0; 1024 1025 case UBI_COMPAT_REJECT: 1026 ubi_err(ubi, "incompatible internal volume %d:%d found", 1027 vol_id, lnum); 1028 return -EINVAL; 1029 } 1030 } 1031 1032 if (ec_err) 1033 ubi_warn(ubi, "valid VID header but corrupted EC header at PEB %d", 1034 pnum); 1035 err = ubi_add_to_av(ubi, ai, pnum, ec, vidh, bitflips); 1036 if (err) 1037 return err; 1038 1039 adjust_mean_ec: 1040 if (!ec_err) { 1041 ai->ec_sum += ec; 1042 ai->ec_count += 1; 1043 if (ec > ai->max_ec) 1044 ai->max_ec = ec; 1045 if (ec < ai->min_ec) 1046 ai->min_ec = ec; 1047 } 1048 1049 return 0; 1050 } 1051 1052 /** 1053 * late_analysis - analyze the overall situation with PEB. 1054 * @ubi: UBI device description object 1055 * @ai: attaching information 1056 * 1057 * This is a helper function which takes a look what PEBs we have after we 1058 * gather information about all of them ("ai" is compete). It decides whether 1059 * the flash is empty and should be formatted of whether there are too many 1060 * corrupted PEBs and we should not attach this MTD device. Returns zero if we 1061 * should proceed with attaching the MTD device, and %-EINVAL if we should not. 1062 */ 1063 static int late_analysis(struct ubi_device *ubi, struct ubi_attach_info *ai) 1064 { 1065 struct ubi_ainf_peb *aeb; 1066 int max_corr, peb_count; 1067 1068 peb_count = ubi->peb_count - ai->bad_peb_count - ai->alien_peb_count; 1069 max_corr = peb_count / 20 ?: 8; 1070 1071 /* 1072 * Few corrupted PEBs is not a problem and may be just a result of 1073 * unclean reboots. However, many of them may indicate some problems 1074 * with the flash HW or driver. 1075 */ 1076 if (ai->corr_peb_count) { 1077 ubi_err(ubi, "%d PEBs are corrupted and preserved", 1078 ai->corr_peb_count); 1079 pr_err("Corrupted PEBs are:"); 1080 list_for_each_entry(aeb, &ai->corr, u.list) 1081 pr_cont(" %d", aeb->pnum); 1082 pr_cont("\n"); 1083 1084 /* 1085 * If too many PEBs are corrupted, we refuse attaching, 1086 * otherwise, only print a warning. 1087 */ 1088 if (ai->corr_peb_count >= max_corr) { 1089 ubi_err(ubi, "too many corrupted PEBs, refusing"); 1090 return -EINVAL; 1091 } 1092 } 1093 1094 if (ai->empty_peb_count + ai->maybe_bad_peb_count == peb_count) { 1095 /* 1096 * All PEBs are empty, or almost all - a couple PEBs look like 1097 * they may be bad PEBs which were not marked as bad yet. 1098 * 1099 * This piece of code basically tries to distinguish between 1100 * the following situations: 1101 * 1102 * 1. Flash is empty, but there are few bad PEBs, which are not 1103 * marked as bad so far, and which were read with error. We 1104 * want to go ahead and format this flash. While formatting, 1105 * the faulty PEBs will probably be marked as bad. 1106 * 1107 * 2. Flash contains non-UBI data and we do not want to format 1108 * it and destroy possibly important information. 1109 */ 1110 if (ai->maybe_bad_peb_count <= 2) { 1111 ai->is_empty = 1; 1112 ubi_msg(ubi, "empty MTD device detected"); 1113 get_random_bytes(&ubi->image_seq, 1114 sizeof(ubi->image_seq)); 1115 } else { 1116 ubi_err(ubi, "MTD device is not UBI-formatted and possibly contains non-UBI data - refusing it"); 1117 return -EINVAL; 1118 } 1119 1120 } 1121 1122 return 0; 1123 } 1124 1125 /** 1126 * destroy_av - free volume attaching information. 1127 * @av: volume attaching information 1128 * @ai: attaching information 1129 * 1130 * This function destroys the volume attaching information. 1131 */ 1132 static void destroy_av(struct ubi_attach_info *ai, struct ubi_ainf_volume *av) 1133 { 1134 struct ubi_ainf_peb *aeb; 1135 struct rb_node *this = av->root.rb_node; 1136 1137 while (this) { 1138 if (this->rb_left) 1139 this = this->rb_left; 1140 else if (this->rb_right) 1141 this = this->rb_right; 1142 else { 1143 aeb = rb_entry(this, struct ubi_ainf_peb, u.rb); 1144 this = rb_parent(this); 1145 if (this) { 1146 if (this->rb_left == &aeb->u.rb) 1147 this->rb_left = NULL; 1148 else 1149 this->rb_right = NULL; 1150 } 1151 1152 kmem_cache_free(ai->aeb_slab_cache, aeb); 1153 } 1154 } 1155 kfree(av); 1156 } 1157 1158 /** 1159 * destroy_ai - destroy attaching information. 1160 * @ai: attaching information 1161 */ 1162 static void destroy_ai(struct ubi_attach_info *ai) 1163 { 1164 struct ubi_ainf_peb *aeb, *aeb_tmp; 1165 struct ubi_ainf_volume *av; 1166 struct rb_node *rb; 1167 1168 list_for_each_entry_safe(aeb, aeb_tmp, &ai->alien, u.list) { 1169 list_del(&aeb->u.list); 1170 kmem_cache_free(ai->aeb_slab_cache, aeb); 1171 } 1172 list_for_each_entry_safe(aeb, aeb_tmp, &ai->erase, u.list) { 1173 list_del(&aeb->u.list); 1174 kmem_cache_free(ai->aeb_slab_cache, aeb); 1175 } 1176 list_for_each_entry_safe(aeb, aeb_tmp, &ai->corr, u.list) { 1177 list_del(&aeb->u.list); 1178 kmem_cache_free(ai->aeb_slab_cache, aeb); 1179 } 1180 list_for_each_entry_safe(aeb, aeb_tmp, &ai->free, u.list) { 1181 list_del(&aeb->u.list); 1182 kmem_cache_free(ai->aeb_slab_cache, aeb); 1183 } 1184 1185 /* Destroy the volume RB-tree */ 1186 rb = ai->volumes.rb_node; 1187 while (rb) { 1188 if (rb->rb_left) 1189 rb = rb->rb_left; 1190 else if (rb->rb_right) 1191 rb = rb->rb_right; 1192 else { 1193 av = rb_entry(rb, struct ubi_ainf_volume, rb); 1194 1195 rb = rb_parent(rb); 1196 if (rb) { 1197 if (rb->rb_left == &av->rb) 1198 rb->rb_left = NULL; 1199 else 1200 rb->rb_right = NULL; 1201 } 1202 1203 destroy_av(ai, av); 1204 } 1205 } 1206 1207 kmem_cache_destroy(ai->aeb_slab_cache); 1208 1209 kfree(ai); 1210 } 1211 1212 /** 1213 * scan_all - scan entire MTD device. 1214 * @ubi: UBI device description object 1215 * @ai: attach info object 1216 * @start: start scanning at this PEB 1217 * 1218 * This function does full scanning of an MTD device and returns complete 1219 * information about it in form of a "struct ubi_attach_info" object. In case 1220 * of failure, an error code is returned. 1221 */ 1222 static int scan_all(struct ubi_device *ubi, struct ubi_attach_info *ai, 1223 int start) 1224 { 1225 int err, pnum; 1226 struct rb_node *rb1, *rb2; 1227 struct ubi_ainf_volume *av; 1228 struct ubi_ainf_peb *aeb; 1229 1230 err = -ENOMEM; 1231 1232 ech = kzalloc(ubi->ec_hdr_alsize, GFP_KERNEL); 1233 if (!ech) 1234 return err; 1235 1236 vidh = ubi_zalloc_vid_hdr(ubi, GFP_KERNEL); 1237 if (!vidh) 1238 goto out_ech; 1239 1240 for (pnum = start; pnum < ubi->peb_count; pnum++) { 1241 cond_resched(); 1242 1243 dbg_gen("process PEB %d", pnum); 1244 err = scan_peb(ubi, ai, pnum, NULL, NULL); 1245 if (err < 0) 1246 goto out_vidh; 1247 } 1248 1249 ubi_msg(ubi, "scanning is finished"); 1250 1251 /* Calculate mean erase counter */ 1252 if (ai->ec_count) 1253 ai->mean_ec = div_u64(ai->ec_sum, ai->ec_count); 1254 1255 err = late_analysis(ubi, ai); 1256 if (err) 1257 goto out_vidh; 1258 1259 /* 1260 * In case of unknown erase counter we use the mean erase counter 1261 * value. 1262 */ 1263 ubi_rb_for_each_entry(rb1, av, &ai->volumes, rb) { 1264 ubi_rb_for_each_entry(rb2, aeb, &av->root, u.rb) 1265 if (aeb->ec == UBI_UNKNOWN) 1266 aeb->ec = ai->mean_ec; 1267 } 1268 1269 list_for_each_entry(aeb, &ai->free, u.list) { 1270 if (aeb->ec == UBI_UNKNOWN) 1271 aeb->ec = ai->mean_ec; 1272 } 1273 1274 list_for_each_entry(aeb, &ai->corr, u.list) 1275 if (aeb->ec == UBI_UNKNOWN) 1276 aeb->ec = ai->mean_ec; 1277 1278 list_for_each_entry(aeb, &ai->erase, u.list) 1279 if (aeb->ec == UBI_UNKNOWN) 1280 aeb->ec = ai->mean_ec; 1281 1282 err = self_check_ai(ubi, ai); 1283 if (err) 1284 goto out_vidh; 1285 1286 ubi_free_vid_hdr(ubi, vidh); 1287 kfree(ech); 1288 1289 return 0; 1290 1291 out_vidh: 1292 ubi_free_vid_hdr(ubi, vidh); 1293 out_ech: 1294 kfree(ech); 1295 return err; 1296 } 1297 1298 static struct ubi_attach_info *alloc_ai(void) 1299 { 1300 struct ubi_attach_info *ai; 1301 1302 ai = kzalloc(sizeof(struct ubi_attach_info), GFP_KERNEL); 1303 if (!ai) 1304 return ai; 1305 1306 INIT_LIST_HEAD(&ai->corr); 1307 INIT_LIST_HEAD(&ai->free); 1308 INIT_LIST_HEAD(&ai->erase); 1309 INIT_LIST_HEAD(&ai->alien); 1310 ai->volumes = RB_ROOT; 1311 ai->aeb_slab_cache = kmem_cache_create("ubi_aeb_slab_cache", 1312 sizeof(struct ubi_ainf_peb), 1313 0, 0, NULL); 1314 if (!ai->aeb_slab_cache) { 1315 kfree(ai); 1316 ai = NULL; 1317 } 1318 1319 return ai; 1320 } 1321 1322 #ifdef CONFIG_MTD_UBI_FASTMAP 1323 1324 /** 1325 * scan_fastmap - try to find a fastmap and attach from it. 1326 * @ubi: UBI device description object 1327 * @ai: attach info object 1328 * 1329 * Returns 0 on success, negative return values indicate an internal 1330 * error. 1331 * UBI_NO_FASTMAP denotes that no fastmap was found. 1332 * UBI_BAD_FASTMAP denotes that the found fastmap was invalid. 1333 */ 1334 static int scan_fast(struct ubi_device *ubi, struct ubi_attach_info **ai) 1335 { 1336 int err, pnum, fm_anchor = -1; 1337 unsigned long long max_sqnum = 0; 1338 1339 err = -ENOMEM; 1340 1341 ech = kzalloc(ubi->ec_hdr_alsize, GFP_KERNEL); 1342 if (!ech) 1343 goto out; 1344 1345 vidh = ubi_zalloc_vid_hdr(ubi, GFP_KERNEL); 1346 if (!vidh) 1347 goto out_ech; 1348 1349 for (pnum = 0; pnum < UBI_FM_MAX_START; pnum++) { 1350 int vol_id = -1; 1351 unsigned long long sqnum = -1; 1352 cond_resched(); 1353 1354 dbg_gen("process PEB %d", pnum); 1355 err = scan_peb(ubi, *ai, pnum, &vol_id, &sqnum); 1356 if (err < 0) 1357 goto out_vidh; 1358 1359 if (vol_id == UBI_FM_SB_VOLUME_ID && sqnum > max_sqnum) { 1360 max_sqnum = sqnum; 1361 fm_anchor = pnum; 1362 } 1363 } 1364 1365 ubi_free_vid_hdr(ubi, vidh); 1366 kfree(ech); 1367 1368 if (fm_anchor < 0) 1369 return UBI_NO_FASTMAP; 1370 1371 destroy_ai(*ai); 1372 *ai = alloc_ai(); 1373 if (!*ai) 1374 return -ENOMEM; 1375 1376 return ubi_scan_fastmap(ubi, *ai, fm_anchor); 1377 1378 out_vidh: 1379 ubi_free_vid_hdr(ubi, vidh); 1380 out_ech: 1381 kfree(ech); 1382 out: 1383 return err; 1384 } 1385 1386 #endif 1387 1388 /** 1389 * ubi_attach - attach an MTD device. 1390 * @ubi: UBI device descriptor 1391 * @force_scan: if set to non-zero attach by scanning 1392 * 1393 * This function returns zero in case of success and a negative error code in 1394 * case of failure. 1395 */ 1396 int ubi_attach(struct ubi_device *ubi, int force_scan) 1397 { 1398 int err; 1399 struct ubi_attach_info *ai; 1400 1401 ai = alloc_ai(); 1402 if (!ai) 1403 return -ENOMEM; 1404 1405 #ifdef CONFIG_MTD_UBI_FASTMAP 1406 /* On small flash devices we disable fastmap in any case. */ 1407 if ((int)mtd_div_by_eb(ubi->mtd->size, ubi->mtd) <= UBI_FM_MAX_START) { 1408 ubi->fm_disabled = 1; 1409 force_scan = 1; 1410 } 1411 1412 if (force_scan) 1413 err = scan_all(ubi, ai, 0); 1414 else { 1415 err = scan_fast(ubi, &ai); 1416 if (err > 0 || mtd_is_eccerr(err)) { 1417 if (err != UBI_NO_FASTMAP) { 1418 destroy_ai(ai); 1419 ai = alloc_ai(); 1420 if (!ai) 1421 return -ENOMEM; 1422 1423 err = scan_all(ubi, ai, 0); 1424 } else { 1425 err = scan_all(ubi, ai, UBI_FM_MAX_START); 1426 } 1427 } 1428 } 1429 #else 1430 err = scan_all(ubi, ai, 0); 1431 #endif 1432 if (err) 1433 goto out_ai; 1434 1435 ubi->bad_peb_count = ai->bad_peb_count; 1436 ubi->good_peb_count = ubi->peb_count - ubi->bad_peb_count; 1437 ubi->corr_peb_count = ai->corr_peb_count; 1438 ubi->max_ec = ai->max_ec; 1439 ubi->mean_ec = ai->mean_ec; 1440 dbg_gen("max. sequence number: %llu", ai->max_sqnum); 1441 1442 err = ubi_read_volume_table(ubi, ai); 1443 if (err) 1444 goto out_ai; 1445 1446 err = ubi_wl_init(ubi, ai); 1447 if (err) 1448 goto out_vtbl; 1449 1450 err = ubi_eba_init(ubi, ai); 1451 if (err) 1452 goto out_wl; 1453 1454 #ifdef CONFIG_MTD_UBI_FASTMAP 1455 if (ubi->fm && ubi_dbg_chk_fastmap(ubi)) { 1456 struct ubi_attach_info *scan_ai; 1457 1458 scan_ai = alloc_ai(); 1459 if (!scan_ai) { 1460 err = -ENOMEM; 1461 goto out_wl; 1462 } 1463 1464 err = scan_all(ubi, scan_ai, 0); 1465 if (err) { 1466 destroy_ai(scan_ai); 1467 goto out_wl; 1468 } 1469 1470 err = self_check_eba(ubi, ai, scan_ai); 1471 destroy_ai(scan_ai); 1472 1473 if (err) 1474 goto out_wl; 1475 } 1476 #endif 1477 1478 destroy_ai(ai); 1479 return 0; 1480 1481 out_wl: 1482 ubi_wl_close(ubi); 1483 out_vtbl: 1484 ubi_free_internal_volumes(ubi); 1485 vfree(ubi->vtbl); 1486 out_ai: 1487 destroy_ai(ai); 1488 return err; 1489 } 1490 1491 /** 1492 * self_check_ai - check the attaching information. 1493 * @ubi: UBI device description object 1494 * @ai: attaching information 1495 * 1496 * This function returns zero if the attaching information is all right, and a 1497 * negative error code if not or if an error occurred. 1498 */ 1499 static int self_check_ai(struct ubi_device *ubi, struct ubi_attach_info *ai) 1500 { 1501 int pnum, err, vols_found = 0; 1502 struct rb_node *rb1, *rb2; 1503 struct ubi_ainf_volume *av; 1504 struct ubi_ainf_peb *aeb, *last_aeb; 1505 uint8_t *buf; 1506 1507 if (!ubi_dbg_chk_gen(ubi)) 1508 return 0; 1509 1510 /* 1511 * At first, check that attaching information is OK. 1512 */ 1513 ubi_rb_for_each_entry(rb1, av, &ai->volumes, rb) { 1514 int leb_count = 0; 1515 1516 cond_resched(); 1517 1518 vols_found += 1; 1519 1520 if (ai->is_empty) { 1521 ubi_err(ubi, "bad is_empty flag"); 1522 goto bad_av; 1523 } 1524 1525 if (av->vol_id < 0 || av->highest_lnum < 0 || 1526 av->leb_count < 0 || av->vol_type < 0 || av->used_ebs < 0 || 1527 av->data_pad < 0 || av->last_data_size < 0) { 1528 ubi_err(ubi, "negative values"); 1529 goto bad_av; 1530 } 1531 1532 if (av->vol_id >= UBI_MAX_VOLUMES && 1533 av->vol_id < UBI_INTERNAL_VOL_START) { 1534 ubi_err(ubi, "bad vol_id"); 1535 goto bad_av; 1536 } 1537 1538 if (av->vol_id > ai->highest_vol_id) { 1539 ubi_err(ubi, "highest_vol_id is %d, but vol_id %d is there", 1540 ai->highest_vol_id, av->vol_id); 1541 goto out; 1542 } 1543 1544 if (av->vol_type != UBI_DYNAMIC_VOLUME && 1545 av->vol_type != UBI_STATIC_VOLUME) { 1546 ubi_err(ubi, "bad vol_type"); 1547 goto bad_av; 1548 } 1549 1550 if (av->data_pad > ubi->leb_size / 2) { 1551 ubi_err(ubi, "bad data_pad"); 1552 goto bad_av; 1553 } 1554 1555 last_aeb = NULL; 1556 ubi_rb_for_each_entry(rb2, aeb, &av->root, u.rb) { 1557 cond_resched(); 1558 1559 last_aeb = aeb; 1560 leb_count += 1; 1561 1562 if (aeb->pnum < 0 || aeb->ec < 0) { 1563 ubi_err(ubi, "negative values"); 1564 goto bad_aeb; 1565 } 1566 1567 if (aeb->ec < ai->min_ec) { 1568 ubi_err(ubi, "bad ai->min_ec (%d), %d found", 1569 ai->min_ec, aeb->ec); 1570 goto bad_aeb; 1571 } 1572 1573 if (aeb->ec > ai->max_ec) { 1574 ubi_err(ubi, "bad ai->max_ec (%d), %d found", 1575 ai->max_ec, aeb->ec); 1576 goto bad_aeb; 1577 } 1578 1579 if (aeb->pnum >= ubi->peb_count) { 1580 ubi_err(ubi, "too high PEB number %d, total PEBs %d", 1581 aeb->pnum, ubi->peb_count); 1582 goto bad_aeb; 1583 } 1584 1585 if (av->vol_type == UBI_STATIC_VOLUME) { 1586 if (aeb->lnum >= av->used_ebs) { 1587 ubi_err(ubi, "bad lnum or used_ebs"); 1588 goto bad_aeb; 1589 } 1590 } else { 1591 if (av->used_ebs != 0) { 1592 ubi_err(ubi, "non-zero used_ebs"); 1593 goto bad_aeb; 1594 } 1595 } 1596 1597 if (aeb->lnum > av->highest_lnum) { 1598 ubi_err(ubi, "incorrect highest_lnum or lnum"); 1599 goto bad_aeb; 1600 } 1601 } 1602 1603 if (av->leb_count != leb_count) { 1604 ubi_err(ubi, "bad leb_count, %d objects in the tree", 1605 leb_count); 1606 goto bad_av; 1607 } 1608 1609 if (!last_aeb) 1610 continue; 1611 1612 aeb = last_aeb; 1613 1614 if (aeb->lnum != av->highest_lnum) { 1615 ubi_err(ubi, "bad highest_lnum"); 1616 goto bad_aeb; 1617 } 1618 } 1619 1620 if (vols_found != ai->vols_found) { 1621 ubi_err(ubi, "bad ai->vols_found %d, should be %d", 1622 ai->vols_found, vols_found); 1623 goto out; 1624 } 1625 1626 /* Check that attaching information is correct */ 1627 ubi_rb_for_each_entry(rb1, av, &ai->volumes, rb) { 1628 last_aeb = NULL; 1629 ubi_rb_for_each_entry(rb2, aeb, &av->root, u.rb) { 1630 int vol_type; 1631 1632 cond_resched(); 1633 1634 last_aeb = aeb; 1635 1636 err = ubi_io_read_vid_hdr(ubi, aeb->pnum, vidh, 1); 1637 if (err && err != UBI_IO_BITFLIPS) { 1638 ubi_err(ubi, "VID header is not OK (%d)", 1639 err); 1640 if (err > 0) 1641 err = -EIO; 1642 return err; 1643 } 1644 1645 vol_type = vidh->vol_type == UBI_VID_DYNAMIC ? 1646 UBI_DYNAMIC_VOLUME : UBI_STATIC_VOLUME; 1647 if (av->vol_type != vol_type) { 1648 ubi_err(ubi, "bad vol_type"); 1649 goto bad_vid_hdr; 1650 } 1651 1652 if (aeb->sqnum != be64_to_cpu(vidh->sqnum)) { 1653 ubi_err(ubi, "bad sqnum %llu", aeb->sqnum); 1654 goto bad_vid_hdr; 1655 } 1656 1657 if (av->vol_id != be32_to_cpu(vidh->vol_id)) { 1658 ubi_err(ubi, "bad vol_id %d", av->vol_id); 1659 goto bad_vid_hdr; 1660 } 1661 1662 if (av->compat != vidh->compat) { 1663 ubi_err(ubi, "bad compat %d", vidh->compat); 1664 goto bad_vid_hdr; 1665 } 1666 1667 if (aeb->lnum != be32_to_cpu(vidh->lnum)) { 1668 ubi_err(ubi, "bad lnum %d", aeb->lnum); 1669 goto bad_vid_hdr; 1670 } 1671 1672 if (av->used_ebs != be32_to_cpu(vidh->used_ebs)) { 1673 ubi_err(ubi, "bad used_ebs %d", av->used_ebs); 1674 goto bad_vid_hdr; 1675 } 1676 1677 if (av->data_pad != be32_to_cpu(vidh->data_pad)) { 1678 ubi_err(ubi, "bad data_pad %d", av->data_pad); 1679 goto bad_vid_hdr; 1680 } 1681 } 1682 1683 if (!last_aeb) 1684 continue; 1685 1686 if (av->highest_lnum != be32_to_cpu(vidh->lnum)) { 1687 ubi_err(ubi, "bad highest_lnum %d", av->highest_lnum); 1688 goto bad_vid_hdr; 1689 } 1690 1691 if (av->last_data_size != be32_to_cpu(vidh->data_size)) { 1692 ubi_err(ubi, "bad last_data_size %d", 1693 av->last_data_size); 1694 goto bad_vid_hdr; 1695 } 1696 } 1697 1698 /* 1699 * Make sure that all the physical eraseblocks are in one of the lists 1700 * or trees. 1701 */ 1702 buf = kzalloc(ubi->peb_count, GFP_KERNEL); 1703 if (!buf) 1704 return -ENOMEM; 1705 1706 for (pnum = 0; pnum < ubi->peb_count; pnum++) { 1707 err = ubi_io_is_bad(ubi, pnum); 1708 if (err < 0) { 1709 kfree(buf); 1710 return err; 1711 } else if (err) 1712 buf[pnum] = 1; 1713 } 1714 1715 ubi_rb_for_each_entry(rb1, av, &ai->volumes, rb) 1716 ubi_rb_for_each_entry(rb2, aeb, &av->root, u.rb) 1717 buf[aeb->pnum] = 1; 1718 1719 list_for_each_entry(aeb, &ai->free, u.list) 1720 buf[aeb->pnum] = 1; 1721 1722 list_for_each_entry(aeb, &ai->corr, u.list) 1723 buf[aeb->pnum] = 1; 1724 1725 list_for_each_entry(aeb, &ai->erase, u.list) 1726 buf[aeb->pnum] = 1; 1727 1728 list_for_each_entry(aeb, &ai->alien, u.list) 1729 buf[aeb->pnum] = 1; 1730 1731 err = 0; 1732 for (pnum = 0; pnum < ubi->peb_count; pnum++) 1733 if (!buf[pnum]) { 1734 ubi_err(ubi, "PEB %d is not referred", pnum); 1735 err = 1; 1736 } 1737 1738 kfree(buf); 1739 if (err) 1740 goto out; 1741 return 0; 1742 1743 bad_aeb: 1744 ubi_err(ubi, "bad attaching information about LEB %d", aeb->lnum); 1745 ubi_dump_aeb(aeb, 0); 1746 ubi_dump_av(av); 1747 goto out; 1748 1749 bad_av: 1750 ubi_err(ubi, "bad attaching information about volume %d", av->vol_id); 1751 ubi_dump_av(av); 1752 goto out; 1753 1754 bad_vid_hdr: 1755 ubi_err(ubi, "bad attaching information about volume %d", av->vol_id); 1756 ubi_dump_av(av); 1757 ubi_dump_vid_hdr(vidh); 1758 1759 out: 1760 dump_stack(); 1761 return -EINVAL; 1762 } 1763