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