UBI: introduce a new IO return code
[platform/kernel/linux-starfive.git] / drivers / mtd / ubi / io.c
1 /*
2  * Copyright (c) International Business Machines Corp., 2006
3  * Copyright (c) Nokia Corporation, 2006, 2007
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
13  * the GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  *
19  * Author: Artem Bityutskiy (Битюцкий Артём)
20  */
21
22 /*
23  * UBI input/output sub-system.
24  *
25  * This sub-system provides a uniform way to work with all kinds of the
26  * underlying MTD devices. It also implements handy functions for reading and
27  * writing UBI headers.
28  *
29  * We are trying to have a paranoid mindset and not to trust to what we read
30  * from the flash media in order to be more secure and robust. So this
31  * sub-system validates every single header it reads from the flash media.
32  *
33  * Some words about how the eraseblock headers are stored.
34  *
35  * The erase counter header is always stored at offset zero. By default, the
36  * VID header is stored after the EC header at the closest aligned offset
37  * (i.e. aligned to the minimum I/O unit size). Data starts next to the VID
38  * header at the closest aligned offset. But this default layout may be
39  * changed. For example, for different reasons (e.g., optimization) UBI may be
40  * asked to put the VID header at further offset, and even at an unaligned
41  * offset. Of course, if the offset of the VID header is unaligned, UBI adds
42  * proper padding in front of it. Data offset may also be changed but it has to
43  * be aligned.
44  *
45  * About minimal I/O units. In general, UBI assumes flash device model where
46  * there is only one minimal I/O unit size. E.g., in case of NOR flash it is 1,
47  * in case of NAND flash it is a NAND page, etc. This is reported by MTD in the
48  * @ubi->mtd->writesize field. But as an exception, UBI admits of using another
49  * (smaller) minimal I/O unit size for EC and VID headers to make it possible
50  * to do different optimizations.
51  *
52  * This is extremely useful in case of NAND flashes which admit of several
53  * write operations to one NAND page. In this case UBI can fit EC and VID
54  * headers at one NAND page. Thus, UBI may use "sub-page" size as the minimal
55  * I/O unit for the headers (the @ubi->hdrs_min_io_size field). But it still
56  * reports NAND page size (@ubi->min_io_size) as a minimal I/O unit for the UBI
57  * users.
58  *
59  * Example: some Samsung NANDs with 2KiB pages allow 4x 512-byte writes, so
60  * although the minimal I/O unit is 2K, UBI uses 512 bytes for EC and VID
61  * headers.
62  *
63  * Q: why not just to treat sub-page as a minimal I/O unit of this flash
64  * device, e.g., make @ubi->min_io_size = 512 in the example above?
65  *
66  * A: because when writing a sub-page, MTD still writes a full 2K page but the
67  * bytes which are not relevant to the sub-page are 0xFF. So, basically,
68  * writing 4x512 sub-pages is 4 times slower than writing one 2KiB NAND page.
69  * Thus, we prefer to use sub-pages only for EC and VID headers.
70  *
71  * As it was noted above, the VID header may start at a non-aligned offset.
72  * For example, in case of a 2KiB page NAND flash with a 512 bytes sub-page,
73  * the VID header may reside at offset 1984 which is the last 64 bytes of the
74  * last sub-page (EC header is always at offset zero). This causes some
75  * difficulties when reading and writing VID headers.
76  *
77  * Suppose we have a 64-byte buffer and we read a VID header at it. We change
78  * the data and want to write this VID header out. As we can only write in
79  * 512-byte chunks, we have to allocate one more buffer and copy our VID header
80  * to offset 448 of this buffer.
81  *
82  * The I/O sub-system does the following trick in order to avoid this extra
83  * copy. It always allocates a @ubi->vid_hdr_alsize bytes buffer for the VID
84  * header and returns a pointer to offset @ubi->vid_hdr_shift of this buffer.
85  * When the VID header is being written out, it shifts the VID header pointer
86  * back and writes the whole sub-page.
87  */
88
89 #include <linux/crc32.h>
90 #include <linux/err.h>
91 #include <linux/slab.h>
92 #include "ubi.h"
93
94 #ifdef CONFIG_MTD_UBI_DEBUG_PARANOID
95 static int paranoid_check_not_bad(const struct ubi_device *ubi, int pnum);
96 static int paranoid_check_peb_ec_hdr(const struct ubi_device *ubi, int pnum);
97 static int paranoid_check_ec_hdr(const struct ubi_device *ubi, int pnum,
98                                  const struct ubi_ec_hdr *ec_hdr);
99 static int paranoid_check_peb_vid_hdr(const struct ubi_device *ubi, int pnum);
100 static int paranoid_check_vid_hdr(const struct ubi_device *ubi, int pnum,
101                                   const struct ubi_vid_hdr *vid_hdr);
102 #else
103 #define paranoid_check_not_bad(ubi, pnum) 0
104 #define paranoid_check_peb_ec_hdr(ubi, pnum)  0
105 #define paranoid_check_ec_hdr(ubi, pnum, ec_hdr)  0
106 #define paranoid_check_peb_vid_hdr(ubi, pnum) 0
107 #define paranoid_check_vid_hdr(ubi, pnum, vid_hdr) 0
108 #endif
109
110 /**
111  * ubi_io_read - read data from a physical eraseblock.
112  * @ubi: UBI device description object
113  * @buf: buffer where to store the read data
114  * @pnum: physical eraseblock number to read from
115  * @offset: offset within the physical eraseblock from where to read
116  * @len: how many bytes to read
117  *
118  * This function reads data from offset @offset of physical eraseblock @pnum
119  * and stores the read data in the @buf buffer. The following return codes are
120  * possible:
121  *
122  * o %0 if all the requested data were successfully read;
123  * o %UBI_IO_BITFLIPS if all the requested data were successfully read, but
124  *   correctable bit-flips were detected; this is harmless but may indicate
125  *   that this eraseblock may become bad soon (but do not have to);
126  * o %-EBADMSG if the MTD subsystem reported about data integrity problems, for
127  *   example it can be an ECC error in case of NAND; this most probably means
128  *   that the data is corrupted;
129  * o %-EIO if some I/O error occurred;
130  * o other negative error codes in case of other errors.
131  */
132 int ubi_io_read(const struct ubi_device *ubi, void *buf, int pnum, int offset,
133                 int len)
134 {
135         int err, retries = 0;
136         size_t read;
137         loff_t addr;
138
139         dbg_io("read %d bytes from PEB %d:%d", len, pnum, offset);
140
141         ubi_assert(pnum >= 0 && pnum < ubi->peb_count);
142         ubi_assert(offset >= 0 && offset + len <= ubi->peb_size);
143         ubi_assert(len > 0);
144
145         err = paranoid_check_not_bad(ubi, pnum);
146         if (err)
147                 return err;
148
149         addr = (loff_t)pnum * ubi->peb_size + offset;
150 retry:
151         err = ubi->mtd->read(ubi->mtd, addr, len, &read, buf);
152         if (err) {
153                 if (err == -EUCLEAN) {
154                         /*
155                          * -EUCLEAN is reported if there was a bit-flip which
156                          * was corrected, so this is harmless.
157                          *
158                          * We do not report about it here unless debugging is
159                          * enabled. A corresponding message will be printed
160                          * later, when it is has been scrubbed.
161                          */
162                         dbg_msg("fixable bit-flip detected at PEB %d", pnum);
163                         ubi_assert(len == read);
164                         return UBI_IO_BITFLIPS;
165                 }
166
167                 if (read != len && retries++ < UBI_IO_RETRIES) {
168                         dbg_io("error %d while reading %d bytes from PEB %d:%d,"
169                                " read only %zd bytes, retry",
170                                err, len, pnum, offset, read);
171                         yield();
172                         goto retry;
173                 }
174
175                 ubi_err("error %d while reading %d bytes from PEB %d:%d, "
176                         "read %zd bytes", err, len, pnum, offset, read);
177                 ubi_dbg_dump_stack();
178
179                 /*
180                  * The driver should never return -EBADMSG if it failed to read
181                  * all the requested data. But some buggy drivers might do
182                  * this, so we change it to -EIO.
183                  */
184                 if (read != len && err == -EBADMSG) {
185                         ubi_assert(0);
186                         err = -EIO;
187                 }
188         } else {
189                 ubi_assert(len == read);
190
191                 if (ubi_dbg_is_bitflip()) {
192                         dbg_gen("bit-flip (emulated)");
193                         err = UBI_IO_BITFLIPS;
194                 }
195         }
196
197         return err;
198 }
199
200 /**
201  * ubi_io_write - write data to a physical eraseblock.
202  * @ubi: UBI device description object
203  * @buf: buffer with the data to write
204  * @pnum: physical eraseblock number to write to
205  * @offset: offset within the physical eraseblock where to write
206  * @len: how many bytes to write
207  *
208  * This function writes @len bytes of data from buffer @buf to offset @offset
209  * of physical eraseblock @pnum. If all the data were successfully written,
210  * zero is returned. If an error occurred, this function returns a negative
211  * error code. If %-EIO is returned, the physical eraseblock most probably went
212  * bad.
213  *
214  * Note, in case of an error, it is possible that something was still written
215  * to the flash media, but may be some garbage.
216  */
217 int ubi_io_write(struct ubi_device *ubi, const void *buf, int pnum, int offset,
218                  int len)
219 {
220         int err;
221         size_t written;
222         loff_t addr;
223
224         dbg_io("write %d bytes to PEB %d:%d", len, pnum, offset);
225
226         ubi_assert(pnum >= 0 && pnum < ubi->peb_count);
227         ubi_assert(offset >= 0 && offset + len <= ubi->peb_size);
228         ubi_assert(offset % ubi->hdrs_min_io_size == 0);
229         ubi_assert(len > 0 && len % ubi->hdrs_min_io_size == 0);
230
231         if (ubi->ro_mode) {
232                 ubi_err("read-only mode");
233                 return -EROFS;
234         }
235
236         /* The below has to be compiled out if paranoid checks are disabled */
237
238         err = paranoid_check_not_bad(ubi, pnum);
239         if (err)
240                 return err;
241
242         /* The area we are writing to has to contain all 0xFF bytes */
243         err = ubi_dbg_check_all_ff(ubi, pnum, offset, len);
244         if (err)
245                 return err;
246
247         if (offset >= ubi->leb_start) {
248                 /*
249                  * We write to the data area of the physical eraseblock. Make
250                  * sure it has valid EC and VID headers.
251                  */
252                 err = paranoid_check_peb_ec_hdr(ubi, pnum);
253                 if (err)
254                         return err;
255                 err = paranoid_check_peb_vid_hdr(ubi, pnum);
256                 if (err)
257                         return err;
258         }
259
260         if (ubi_dbg_is_write_failure()) {
261                 dbg_err("cannot write %d bytes to PEB %d:%d "
262                         "(emulated)", len, pnum, offset);
263                 ubi_dbg_dump_stack();
264                 return -EIO;
265         }
266
267         addr = (loff_t)pnum * ubi->peb_size + offset;
268         err = ubi->mtd->write(ubi->mtd, addr, len, &written, buf);
269         if (err) {
270                 ubi_err("error %d while writing %d bytes to PEB %d:%d, written "
271                         "%zd bytes", err, len, pnum, offset, written);
272                 ubi_dbg_dump_stack();
273                 ubi_dbg_dump_flash(ubi, pnum, offset, len);
274         } else
275                 ubi_assert(written == len);
276
277         if (!err) {
278                 err = ubi_dbg_check_write(ubi, buf, pnum, offset, len);
279                 if (err)
280                         return err;
281
282                 /*
283                  * Since we always write sequentially, the rest of the PEB has
284                  * to contain only 0xFF bytes.
285                  */
286                 offset += len;
287                 len = ubi->peb_size - offset;
288                 if (len)
289                         err = ubi_dbg_check_all_ff(ubi, pnum, offset, len);
290         }
291
292         return err;
293 }
294
295 /**
296  * erase_callback - MTD erasure call-back.
297  * @ei: MTD erase information object.
298  *
299  * Note, even though MTD erase interface is asynchronous, all the current
300  * implementations are synchronous anyway.
301  */
302 static void erase_callback(struct erase_info *ei)
303 {
304         wake_up_interruptible((wait_queue_head_t *)ei->priv);
305 }
306
307 /**
308  * do_sync_erase - synchronously erase a physical eraseblock.
309  * @ubi: UBI device description object
310  * @pnum: the physical eraseblock number to erase
311  *
312  * This function synchronously erases physical eraseblock @pnum and returns
313  * zero in case of success and a negative error code in case of failure. If
314  * %-EIO is returned, the physical eraseblock most probably went bad.
315  */
316 static int do_sync_erase(struct ubi_device *ubi, int pnum)
317 {
318         int err, retries = 0;
319         struct erase_info ei;
320         wait_queue_head_t wq;
321
322         dbg_io("erase PEB %d", pnum);
323
324 retry:
325         init_waitqueue_head(&wq);
326         memset(&ei, 0, sizeof(struct erase_info));
327
328         ei.mtd      = ubi->mtd;
329         ei.addr     = (loff_t)pnum * ubi->peb_size;
330         ei.len      = ubi->peb_size;
331         ei.callback = erase_callback;
332         ei.priv     = (unsigned long)&wq;
333
334         err = ubi->mtd->erase(ubi->mtd, &ei);
335         if (err) {
336                 if (retries++ < UBI_IO_RETRIES) {
337                         dbg_io("error %d while erasing PEB %d, retry",
338                                err, pnum);
339                         yield();
340                         goto retry;
341                 }
342                 ubi_err("cannot erase PEB %d, error %d", pnum, err);
343                 ubi_dbg_dump_stack();
344                 return err;
345         }
346
347         err = wait_event_interruptible(wq, ei.state == MTD_ERASE_DONE ||
348                                            ei.state == MTD_ERASE_FAILED);
349         if (err) {
350                 ubi_err("interrupted PEB %d erasure", pnum);
351                 return -EINTR;
352         }
353
354         if (ei.state == MTD_ERASE_FAILED) {
355                 if (retries++ < UBI_IO_RETRIES) {
356                         dbg_io("error while erasing PEB %d, retry", pnum);
357                         yield();
358                         goto retry;
359                 }
360                 ubi_err("cannot erase PEB %d", pnum);
361                 ubi_dbg_dump_stack();
362                 return -EIO;
363         }
364
365         err = ubi_dbg_check_all_ff(ubi, pnum, 0, ubi->peb_size);
366         if (err)
367                 return err;
368
369         if (ubi_dbg_is_erase_failure() && !err) {
370                 dbg_err("cannot erase PEB %d (emulated)", pnum);
371                 return -EIO;
372         }
373
374         return 0;
375 }
376
377 /**
378  * check_pattern - check if buffer contains only a certain byte pattern.
379  * @buf: buffer to check
380  * @patt: the pattern to check
381  * @size: buffer size in bytes
382  *
383  * This function returns %1 in there are only @patt bytes in @buf, and %0 if
384  * something else was also found.
385  */
386 static int check_pattern(const void *buf, uint8_t patt, int size)
387 {
388         int i;
389
390         for (i = 0; i < size; i++)
391                 if (((const uint8_t *)buf)[i] != patt)
392                         return 0;
393         return 1;
394 }
395
396 /* Patterns to write to a physical eraseblock when torturing it */
397 static uint8_t patterns[] = {0xa5, 0x5a, 0x0};
398
399 /**
400  * torture_peb - test a supposedly bad physical eraseblock.
401  * @ubi: UBI device description object
402  * @pnum: the physical eraseblock number to test
403  *
404  * This function returns %-EIO if the physical eraseblock did not pass the
405  * test, a positive number of erase operations done if the test was
406  * successfully passed, and other negative error codes in case of other errors.
407  */
408 static int torture_peb(struct ubi_device *ubi, int pnum)
409 {
410         int err, i, patt_count;
411
412         ubi_msg("run torture test for PEB %d", pnum);
413         patt_count = ARRAY_SIZE(patterns);
414         ubi_assert(patt_count > 0);
415
416         mutex_lock(&ubi->buf_mutex);
417         for (i = 0; i < patt_count; i++) {
418                 err = do_sync_erase(ubi, pnum);
419                 if (err)
420                         goto out;
421
422                 /* Make sure the PEB contains only 0xFF bytes */
423                 err = ubi_io_read(ubi, ubi->peb_buf1, pnum, 0, ubi->peb_size);
424                 if (err)
425                         goto out;
426
427                 err = check_pattern(ubi->peb_buf1, 0xFF, ubi->peb_size);
428                 if (err == 0) {
429                         ubi_err("erased PEB %d, but a non-0xFF byte found",
430                                 pnum);
431                         err = -EIO;
432                         goto out;
433                 }
434
435                 /* Write a pattern and check it */
436                 memset(ubi->peb_buf1, patterns[i], ubi->peb_size);
437                 err = ubi_io_write(ubi, ubi->peb_buf1, pnum, 0, ubi->peb_size);
438                 if (err)
439                         goto out;
440
441                 memset(ubi->peb_buf1, ~patterns[i], ubi->peb_size);
442                 err = ubi_io_read(ubi, ubi->peb_buf1, pnum, 0, ubi->peb_size);
443                 if (err)
444                         goto out;
445
446                 err = check_pattern(ubi->peb_buf1, patterns[i], ubi->peb_size);
447                 if (err == 0) {
448                         ubi_err("pattern %x checking failed for PEB %d",
449                                 patterns[i], pnum);
450                         err = -EIO;
451                         goto out;
452                 }
453         }
454
455         err = patt_count;
456         ubi_msg("PEB %d passed torture test, do not mark it a bad", pnum);
457
458 out:
459         mutex_unlock(&ubi->buf_mutex);
460         if (err == UBI_IO_BITFLIPS || err == -EBADMSG) {
461                 /*
462                  * If a bit-flip or data integrity error was detected, the test
463                  * has not passed because it happened on a freshly erased
464                  * physical eraseblock which means something is wrong with it.
465                  */
466                 ubi_err("read problems on freshly erased PEB %d, must be bad",
467                         pnum);
468                 err = -EIO;
469         }
470         return err;
471 }
472
473 /**
474  * nor_erase_prepare - prepare a NOR flash PEB for erasure.
475  * @ubi: UBI device description object
476  * @pnum: physical eraseblock number to prepare
477  *
478  * NOR flash, or at least some of them, have peculiar embedded PEB erasure
479  * algorithm: the PEB is first filled with zeroes, then it is erased. And
480  * filling with zeroes starts from the end of the PEB. This was observed with
481  * Spansion S29GL512N NOR flash.
482  *
483  * This means that in case of a power cut we may end up with intact data at the
484  * beginning of the PEB, and all zeroes at the end of PEB. In other words, the
485  * EC and VID headers are OK, but a large chunk of data at the end of PEB is
486  * zeroed. This makes UBI mistakenly treat this PEB as used and associate it
487  * with an LEB, which leads to subsequent failures (e.g., UBIFS fails).
488  *
489  * This function is called before erasing NOR PEBs and it zeroes out EC and VID
490  * magic numbers in order to invalidate them and prevent the failures. Returns
491  * zero in case of success and a negative error code in case of failure.
492  */
493 static int nor_erase_prepare(struct ubi_device *ubi, int pnum)
494 {
495         int err, err1;
496         size_t written;
497         loff_t addr;
498         uint32_t data = 0;
499         struct ubi_vid_hdr vid_hdr;
500
501         addr = (loff_t)pnum * ubi->peb_size + ubi->vid_hdr_aloffset;
502         err = ubi->mtd->write(ubi->mtd, addr, 4, &written, (void *)&data);
503         if (!err) {
504                 addr -= ubi->vid_hdr_aloffset;
505                 err = ubi->mtd->write(ubi->mtd, addr, 4, &written,
506                                       (void *)&data);
507                 if (!err)
508                         return 0;
509         }
510
511         /*
512          * We failed to write to the media. This was observed with Spansion
513          * S29GL512N NOR flash. Most probably the eraseblock erasure was
514          * interrupted at a very inappropriate moment, so it became unwritable.
515          * In this case we probably anyway have garbage in this PEB.
516          */
517         err1 = ubi_io_read_vid_hdr(ubi, pnum, &vid_hdr, 0);
518         if (err1 == UBI_IO_BAD_HDR_READ || err1 == UBI_IO_BAD_HDR)
519                 /*
520                  * The VID header is corrupted, so we can safely erase this
521                  * PEB and not afraid that it will be treated as a valid PEB in
522                  * case of an unclean reboot.
523                  */
524                 return 0;
525
526         /*
527          * The PEB contains a valid VID header, but we cannot invalidate it.
528          * Supposedly the flash media or the driver is screwed up, so return an
529          * error.
530          */
531         ubi_err("cannot invalidate PEB %d, write returned %d read returned %d",
532                 pnum, err, err1);
533         ubi_dbg_dump_flash(ubi, pnum, 0, ubi->peb_size);
534         return -EIO;
535 }
536
537 /**
538  * ubi_io_sync_erase - synchronously erase a physical eraseblock.
539  * @ubi: UBI device description object
540  * @pnum: physical eraseblock number to erase
541  * @torture: if this physical eraseblock has to be tortured
542  *
543  * This function synchronously erases physical eraseblock @pnum. If @torture
544  * flag is not zero, the physical eraseblock is checked by means of writing
545  * different patterns to it and reading them back. If the torturing is enabled,
546  * the physical eraseblock is erased more than once.
547  *
548  * This function returns the number of erasures made in case of success, %-EIO
549  * if the erasure failed or the torturing test failed, and other negative error
550  * codes in case of other errors. Note, %-EIO means that the physical
551  * eraseblock is bad.
552  */
553 int ubi_io_sync_erase(struct ubi_device *ubi, int pnum, int torture)
554 {
555         int err, ret = 0;
556
557         ubi_assert(pnum >= 0 && pnum < ubi->peb_count);
558
559         err = paranoid_check_not_bad(ubi, pnum);
560         if (err != 0)
561                 return err;
562
563         if (ubi->ro_mode) {
564                 ubi_err("read-only mode");
565                 return -EROFS;
566         }
567
568         if (ubi->nor_flash) {
569                 err = nor_erase_prepare(ubi, pnum);
570                 if (err)
571                         return err;
572         }
573
574         if (torture) {
575                 ret = torture_peb(ubi, pnum);
576                 if (ret < 0)
577                         return ret;
578         }
579
580         err = do_sync_erase(ubi, pnum);
581         if (err)
582                 return err;
583
584         return ret + 1;
585 }
586
587 /**
588  * ubi_io_is_bad - check if a physical eraseblock is bad.
589  * @ubi: UBI device description object
590  * @pnum: the physical eraseblock number to check
591  *
592  * This function returns a positive number if the physical eraseblock is bad,
593  * zero if not, and a negative error code if an error occurred.
594  */
595 int ubi_io_is_bad(const struct ubi_device *ubi, int pnum)
596 {
597         struct mtd_info *mtd = ubi->mtd;
598
599         ubi_assert(pnum >= 0 && pnum < ubi->peb_count);
600
601         if (ubi->bad_allowed) {
602                 int ret;
603
604                 ret = mtd->block_isbad(mtd, (loff_t)pnum * ubi->peb_size);
605                 if (ret < 0)
606                         ubi_err("error %d while checking if PEB %d is bad",
607                                 ret, pnum);
608                 else if (ret)
609                         dbg_io("PEB %d is bad", pnum);
610                 return ret;
611         }
612
613         return 0;
614 }
615
616 /**
617  * ubi_io_mark_bad - mark a physical eraseblock as bad.
618  * @ubi: UBI device description object
619  * @pnum: the physical eraseblock number to mark
620  *
621  * This function returns zero in case of success and a negative error code in
622  * case of failure.
623  */
624 int ubi_io_mark_bad(const struct ubi_device *ubi, int pnum)
625 {
626         int err;
627         struct mtd_info *mtd = ubi->mtd;
628
629         ubi_assert(pnum >= 0 && pnum < ubi->peb_count);
630
631         if (ubi->ro_mode) {
632                 ubi_err("read-only mode");
633                 return -EROFS;
634         }
635
636         if (!ubi->bad_allowed)
637                 return 0;
638
639         err = mtd->block_markbad(mtd, (loff_t)pnum * ubi->peb_size);
640         if (err)
641                 ubi_err("cannot mark PEB %d bad, error %d", pnum, err);
642         return err;
643 }
644
645 /**
646  * validate_ec_hdr - validate an erase counter header.
647  * @ubi: UBI device description object
648  * @ec_hdr: the erase counter header to check
649  *
650  * This function returns zero if the erase counter header is OK, and %1 if
651  * not.
652  */
653 static int validate_ec_hdr(const struct ubi_device *ubi,
654                            const struct ubi_ec_hdr *ec_hdr)
655 {
656         long long ec;
657         int vid_hdr_offset, leb_start;
658
659         ec = be64_to_cpu(ec_hdr->ec);
660         vid_hdr_offset = be32_to_cpu(ec_hdr->vid_hdr_offset);
661         leb_start = be32_to_cpu(ec_hdr->data_offset);
662
663         if (ec_hdr->version != UBI_VERSION) {
664                 ubi_err("node with incompatible UBI version found: "
665                         "this UBI version is %d, image version is %d",
666                         UBI_VERSION, (int)ec_hdr->version);
667                 goto bad;
668         }
669
670         if (vid_hdr_offset != ubi->vid_hdr_offset) {
671                 ubi_err("bad VID header offset %d, expected %d",
672                         vid_hdr_offset, ubi->vid_hdr_offset);
673                 goto bad;
674         }
675
676         if (leb_start != ubi->leb_start) {
677                 ubi_err("bad data offset %d, expected %d",
678                         leb_start, ubi->leb_start);
679                 goto bad;
680         }
681
682         if (ec < 0 || ec > UBI_MAX_ERASECOUNTER) {
683                 ubi_err("bad erase counter %lld", ec);
684                 goto bad;
685         }
686
687         return 0;
688
689 bad:
690         ubi_err("bad EC header");
691         ubi_dbg_dump_ec_hdr(ec_hdr);
692         ubi_dbg_dump_stack();
693         return 1;
694 }
695
696 /**
697  * ubi_io_read_ec_hdr - read and check an erase counter header.
698  * @ubi: UBI device description object
699  * @pnum: physical eraseblock to read from
700  * @ec_hdr: a &struct ubi_ec_hdr object where to store the read erase counter
701  * header
702  * @verbose: be verbose if the header is corrupted or was not found
703  *
704  * This function reads erase counter header from physical eraseblock @pnum and
705  * stores it in @ec_hdr. This function also checks CRC checksum of the read
706  * erase counter header. The following codes may be returned:
707  *
708  * o %0 if the CRC checksum is correct and the header was successfully read;
709  * o %UBI_IO_BITFLIPS if the CRC is correct, but bit-flips were detected
710  *   and corrected by the flash driver; this is harmless but may indicate that
711  *   this eraseblock may become bad soon (but may be not);
712  * o %UBI_IO_BAD_HDR if the erase counter header is corrupted (a CRC error);
713  * o %UBI_IO_PEB_EMPTY if the physical eraseblock is empty;
714  * o a negative error code in case of failure.
715  */
716 int ubi_io_read_ec_hdr(struct ubi_device *ubi, int pnum,
717                        struct ubi_ec_hdr *ec_hdr, int verbose)
718 {
719         int err, read_err = 0;
720         uint32_t crc, magic, hdr_crc;
721
722         dbg_io("read EC header from PEB %d", pnum);
723         ubi_assert(pnum >= 0 && pnum < ubi->peb_count);
724
725         err = ubi_io_read(ubi, ec_hdr, pnum, 0, UBI_EC_HDR_SIZE);
726         if (err) {
727                 if (err != UBI_IO_BITFLIPS && err != -EBADMSG)
728                         return err;
729
730                 /*
731                  * We read all the data, but either a correctable bit-flip
732                  * occurred, or MTD reported about some data integrity error,
733                  * like an ECC error in case of NAND. The former is harmless,
734                  * the later may mean that the read data is corrupted. But we
735                  * have a CRC check-sum and we will detect this. If the EC
736                  * header is still OK, we just report this as there was a
737                  * bit-flip.
738                  */
739                 if (err == -EBADMSG)
740                         read_err = UBI_IO_BAD_HDR_READ;
741         }
742
743         magic = be32_to_cpu(ec_hdr->magic);
744         if (magic != UBI_EC_HDR_MAGIC) {
745                 if (read_err)
746                         return read_err;
747
748                 /*
749                  * The magic field is wrong. Let's check if we have read all
750                  * 0xFF. If yes, this physical eraseblock is assumed to be
751                  * empty.
752                  */
753                 if (check_pattern(ec_hdr, 0xFF, UBI_EC_HDR_SIZE)) {
754                         /* The physical eraseblock is supposedly empty */
755                         if (verbose)
756                                 ubi_warn("no EC header found at PEB %d, "
757                                          "only 0xFF bytes", pnum);
758                         else if (UBI_IO_DEBUG)
759                                 dbg_msg("no EC header found at PEB %d, "
760                                         "only 0xFF bytes", pnum);
761                         return UBI_IO_PEB_EMPTY;
762                 }
763
764                 /*
765                  * This is not a valid erase counter header, and these are not
766                  * 0xFF bytes. Report that the header is corrupted.
767                  */
768                 if (verbose) {
769                         ubi_warn("bad magic number at PEB %d: %08x instead of "
770                                  "%08x", pnum, magic, UBI_EC_HDR_MAGIC);
771                         ubi_dbg_dump_ec_hdr(ec_hdr);
772                 } else if (UBI_IO_DEBUG)
773                         dbg_msg("bad magic number at PEB %d: %08x instead of "
774                                 "%08x", pnum, magic, UBI_EC_HDR_MAGIC);
775                 return UBI_IO_BAD_HDR;
776         }
777
778         crc = crc32(UBI_CRC32_INIT, ec_hdr, UBI_EC_HDR_SIZE_CRC);
779         hdr_crc = be32_to_cpu(ec_hdr->hdr_crc);
780
781         if (hdr_crc != crc) {
782                 if (verbose) {
783                         ubi_warn("bad EC header CRC at PEB %d, calculated "
784                                  "%#08x, read %#08x", pnum, crc, hdr_crc);
785                         ubi_dbg_dump_ec_hdr(ec_hdr);
786                 } else if (UBI_IO_DEBUG)
787                         dbg_msg("bad EC header CRC at PEB %d, calculated "
788                                 "%#08x, read %#08x", pnum, crc, hdr_crc);
789                 return read_err ?: UBI_IO_BAD_HDR;
790         }
791
792         /* And of course validate what has just been read from the media */
793         err = validate_ec_hdr(ubi, ec_hdr);
794         if (err) {
795                 ubi_err("validation failed for PEB %d", pnum);
796                 return -EINVAL;
797         }
798
799         /*
800          * If there was %-EBADMSG, but the header CRC is still OK, report about
801          * a bit-flip to force scrubbing on this PEB.
802          */
803         return read_err ? UBI_IO_BITFLIPS : 0;
804 }
805
806 /**
807  * ubi_io_write_ec_hdr - write an erase counter header.
808  * @ubi: UBI device description object
809  * @pnum: physical eraseblock to write to
810  * @ec_hdr: the erase counter header to write
811  *
812  * This function writes erase counter header described by @ec_hdr to physical
813  * eraseblock @pnum. It also fills most fields of @ec_hdr before writing, so
814  * the caller do not have to fill them. Callers must only fill the @ec_hdr->ec
815  * field.
816  *
817  * This function returns zero in case of success and a negative error code in
818  * case of failure. If %-EIO is returned, the physical eraseblock most probably
819  * went bad.
820  */
821 int ubi_io_write_ec_hdr(struct ubi_device *ubi, int pnum,
822                         struct ubi_ec_hdr *ec_hdr)
823 {
824         int err;
825         uint32_t crc;
826
827         dbg_io("write EC header to PEB %d", pnum);
828         ubi_assert(pnum >= 0 &&  pnum < ubi->peb_count);
829
830         ec_hdr->magic = cpu_to_be32(UBI_EC_HDR_MAGIC);
831         ec_hdr->version = UBI_VERSION;
832         ec_hdr->vid_hdr_offset = cpu_to_be32(ubi->vid_hdr_offset);
833         ec_hdr->data_offset = cpu_to_be32(ubi->leb_start);
834         ec_hdr->image_seq = cpu_to_be32(ubi->image_seq);
835         crc = crc32(UBI_CRC32_INIT, ec_hdr, UBI_EC_HDR_SIZE_CRC);
836         ec_hdr->hdr_crc = cpu_to_be32(crc);
837
838         err = paranoid_check_ec_hdr(ubi, pnum, ec_hdr);
839         if (err)
840                 return err;
841
842         err = ubi_io_write(ubi, ec_hdr, pnum, 0, ubi->ec_hdr_alsize);
843         return err;
844 }
845
846 /**
847  * validate_vid_hdr - validate a volume identifier header.
848  * @ubi: UBI device description object
849  * @vid_hdr: the volume identifier header to check
850  *
851  * This function checks that data stored in the volume identifier header
852  * @vid_hdr. Returns zero if the VID header is OK and %1 if not.
853  */
854 static int validate_vid_hdr(const struct ubi_device *ubi,
855                             const struct ubi_vid_hdr *vid_hdr)
856 {
857         int vol_type = vid_hdr->vol_type;
858         int copy_flag = vid_hdr->copy_flag;
859         int vol_id = be32_to_cpu(vid_hdr->vol_id);
860         int lnum = be32_to_cpu(vid_hdr->lnum);
861         int compat = vid_hdr->compat;
862         int data_size = be32_to_cpu(vid_hdr->data_size);
863         int used_ebs = be32_to_cpu(vid_hdr->used_ebs);
864         int data_pad = be32_to_cpu(vid_hdr->data_pad);
865         int data_crc = be32_to_cpu(vid_hdr->data_crc);
866         int usable_leb_size = ubi->leb_size - data_pad;
867
868         if (copy_flag != 0 && copy_flag != 1) {
869                 dbg_err("bad copy_flag");
870                 goto bad;
871         }
872
873         if (vol_id < 0 || lnum < 0 || data_size < 0 || used_ebs < 0 ||
874             data_pad < 0) {
875                 dbg_err("negative values");
876                 goto bad;
877         }
878
879         if (vol_id >= UBI_MAX_VOLUMES && vol_id < UBI_INTERNAL_VOL_START) {
880                 dbg_err("bad vol_id");
881                 goto bad;
882         }
883
884         if (vol_id < UBI_INTERNAL_VOL_START && compat != 0) {
885                 dbg_err("bad compat");
886                 goto bad;
887         }
888
889         if (vol_id >= UBI_INTERNAL_VOL_START && compat != UBI_COMPAT_DELETE &&
890             compat != UBI_COMPAT_RO && compat != UBI_COMPAT_PRESERVE &&
891             compat != UBI_COMPAT_REJECT) {
892                 dbg_err("bad compat");
893                 goto bad;
894         }
895
896         if (vol_type != UBI_VID_DYNAMIC && vol_type != UBI_VID_STATIC) {
897                 dbg_err("bad vol_type");
898                 goto bad;
899         }
900
901         if (data_pad >= ubi->leb_size / 2) {
902                 dbg_err("bad data_pad");
903                 goto bad;
904         }
905
906         if (vol_type == UBI_VID_STATIC) {
907                 /*
908                  * Although from high-level point of view static volumes may
909                  * contain zero bytes of data, but no VID headers can contain
910                  * zero at these fields, because they empty volumes do not have
911                  * mapped logical eraseblocks.
912                  */
913                 if (used_ebs == 0) {
914                         dbg_err("zero used_ebs");
915                         goto bad;
916                 }
917                 if (data_size == 0) {
918                         dbg_err("zero data_size");
919                         goto bad;
920                 }
921                 if (lnum < used_ebs - 1) {
922                         if (data_size != usable_leb_size) {
923                                 dbg_err("bad data_size");
924                                 goto bad;
925                         }
926                 } else if (lnum == used_ebs - 1) {
927                         if (data_size == 0) {
928                                 dbg_err("bad data_size at last LEB");
929                                 goto bad;
930                         }
931                 } else {
932                         dbg_err("too high lnum");
933                         goto bad;
934                 }
935         } else {
936                 if (copy_flag == 0) {
937                         if (data_crc != 0) {
938                                 dbg_err("non-zero data CRC");
939                                 goto bad;
940                         }
941                         if (data_size != 0) {
942                                 dbg_err("non-zero data_size");
943                                 goto bad;
944                         }
945                 } else {
946                         if (data_size == 0) {
947                                 dbg_err("zero data_size of copy");
948                                 goto bad;
949                         }
950                 }
951                 if (used_ebs != 0) {
952                         dbg_err("bad used_ebs");
953                         goto bad;
954                 }
955         }
956
957         return 0;
958
959 bad:
960         ubi_err("bad VID header");
961         ubi_dbg_dump_vid_hdr(vid_hdr);
962         ubi_dbg_dump_stack();
963         return 1;
964 }
965
966 /**
967  * ubi_io_read_vid_hdr - read and check a volume identifier header.
968  * @ubi: UBI device description object
969  * @pnum: physical eraseblock number to read from
970  * @vid_hdr: &struct ubi_vid_hdr object where to store the read volume
971  * identifier header
972  * @verbose: be verbose if the header is corrupted or wasn't found
973  *
974  * This function reads the volume identifier header from physical eraseblock
975  * @pnum and stores it in @vid_hdr. It also checks CRC checksum of the read
976  * volume identifier header. The following codes may be returned:
977  *
978  * o %0 if the CRC checksum is correct and the header was successfully read;
979  * o %UBI_IO_BITFLIPS if the CRC is correct, but bit-flips were detected
980  *   and corrected by the flash driver; this is harmless but may indicate that
981  *   this eraseblock may become bad soon;
982  * o %UBI_IO_BAD_HDR if the volume identifier header is corrupted (a CRC
983  *   error detected);
984  * o %UBI_IO_PEB_FREE if the physical eraseblock is free (i.e., there is no VID
985  *   header there);
986  * o a negative error code in case of failure.
987  */
988 int ubi_io_read_vid_hdr(struct ubi_device *ubi, int pnum,
989                         struct ubi_vid_hdr *vid_hdr, int verbose)
990 {
991         int err, read_err = 0;
992         uint32_t crc, magic, hdr_crc;
993         void *p;
994
995         dbg_io("read VID header from PEB %d", pnum);
996         ubi_assert(pnum >= 0 &&  pnum < ubi->peb_count);
997
998         p = (char *)vid_hdr - ubi->vid_hdr_shift;
999         err = ubi_io_read(ubi, p, pnum, ubi->vid_hdr_aloffset,
1000                           ubi->vid_hdr_alsize);
1001         if (err) {
1002                 if (err != UBI_IO_BITFLIPS && err != -EBADMSG)
1003                         return err;
1004
1005                 /*
1006                  * We read all the data, but either a correctable bit-flip
1007                  * occurred, or MTD reported about some data integrity error,
1008                  * like an ECC error in case of NAND. The former is harmless,
1009                  * the later may mean the read data is corrupted. But we have a
1010                  * CRC check-sum and we will identify this. If the VID header is
1011                  * still OK, we just report this as there was a bit-flip.
1012                  */
1013                 if (err == -EBADMSG)
1014                         read_err = UBI_IO_BAD_HDR_READ;
1015         }
1016
1017         magic = be32_to_cpu(vid_hdr->magic);
1018         if (magic != UBI_VID_HDR_MAGIC) {
1019                 if (read_err)
1020                         return read_err;
1021
1022                 /*
1023                  * If we have read all 0xFF bytes, the VID header probably does
1024                  * not exist and the physical eraseblock is assumed to be free.
1025                  */
1026                 if (check_pattern(vid_hdr, 0xFF, UBI_VID_HDR_SIZE)) {
1027                         /* The physical eraseblock is supposedly free */
1028                         if (verbose)
1029                                 ubi_warn("no VID header found at PEB %d, "
1030                                          "only 0xFF bytes", pnum);
1031                         else if (UBI_IO_DEBUG)
1032                                 dbg_msg("no VID header found at PEB %d, "
1033                                         "only 0xFF bytes", pnum);
1034                         return UBI_IO_PEB_FREE;
1035                 }
1036
1037                 /*
1038                  * This is not a valid VID header, and these are not 0xFF
1039                  * bytes. Report that the header is corrupted.
1040                  */
1041                 if (verbose) {
1042                         ubi_warn("bad magic number at PEB %d: %08x instead of "
1043                                  "%08x", pnum, magic, UBI_VID_HDR_MAGIC);
1044                         ubi_dbg_dump_vid_hdr(vid_hdr);
1045                 } else if (UBI_IO_DEBUG)
1046                         dbg_msg("bad magic number at PEB %d: %08x instead of "
1047                                 "%08x", pnum, magic, UBI_VID_HDR_MAGIC);
1048                 return UBI_IO_BAD_HDR;
1049         }
1050
1051         crc = crc32(UBI_CRC32_INIT, vid_hdr, UBI_VID_HDR_SIZE_CRC);
1052         hdr_crc = be32_to_cpu(vid_hdr->hdr_crc);
1053
1054         if (hdr_crc != crc) {
1055                 if (verbose) {
1056                         ubi_warn("bad CRC at PEB %d, calculated %#08x, "
1057                                  "read %#08x", pnum, crc, hdr_crc);
1058                         ubi_dbg_dump_vid_hdr(vid_hdr);
1059                 } else if (UBI_IO_DEBUG)
1060                         dbg_msg("bad CRC at PEB %d, calculated %#08x, "
1061                                 "read %#08x", pnum, crc, hdr_crc);
1062                 return read_err ?: UBI_IO_BAD_HDR;
1063         }
1064
1065         /* Validate the VID header that we have just read */
1066         err = validate_vid_hdr(ubi, vid_hdr);
1067         if (err) {
1068                 ubi_err("validation failed for PEB %d", pnum);
1069                 return -EINVAL;
1070         }
1071
1072         /*
1073          * If there was a read error (%-EBADMSG), but the header CRC is still
1074          * OK, report about a bit-flip to force scrubbing on this PEB.
1075          */
1076         return read_err ? UBI_IO_BITFLIPS : 0;
1077 }
1078
1079 /**
1080  * ubi_io_write_vid_hdr - write a volume identifier header.
1081  * @ubi: UBI device description object
1082  * @pnum: the physical eraseblock number to write to
1083  * @vid_hdr: the volume identifier header to write
1084  *
1085  * This function writes the volume identifier header described by @vid_hdr to
1086  * physical eraseblock @pnum. This function automatically fills the
1087  * @vid_hdr->magic and the @vid_hdr->version fields, as well as calculates
1088  * header CRC checksum and stores it at vid_hdr->hdr_crc.
1089  *
1090  * This function returns zero in case of success and a negative error code in
1091  * case of failure. If %-EIO is returned, the physical eraseblock probably went
1092  * bad.
1093  */
1094 int ubi_io_write_vid_hdr(struct ubi_device *ubi, int pnum,
1095                          struct ubi_vid_hdr *vid_hdr)
1096 {
1097         int err;
1098         uint32_t crc;
1099         void *p;
1100
1101         dbg_io("write VID header to PEB %d", pnum);
1102         ubi_assert(pnum >= 0 &&  pnum < ubi->peb_count);
1103
1104         err = paranoid_check_peb_ec_hdr(ubi, pnum);
1105         if (err)
1106                 return err;
1107
1108         vid_hdr->magic = cpu_to_be32(UBI_VID_HDR_MAGIC);
1109         vid_hdr->version = UBI_VERSION;
1110         crc = crc32(UBI_CRC32_INIT, vid_hdr, UBI_VID_HDR_SIZE_CRC);
1111         vid_hdr->hdr_crc = cpu_to_be32(crc);
1112
1113         err = paranoid_check_vid_hdr(ubi, pnum, vid_hdr);
1114         if (err)
1115                 return err;
1116
1117         p = (char *)vid_hdr - ubi->vid_hdr_shift;
1118         err = ubi_io_write(ubi, p, pnum, ubi->vid_hdr_aloffset,
1119                            ubi->vid_hdr_alsize);
1120         return err;
1121 }
1122
1123 #ifdef CONFIG_MTD_UBI_DEBUG_PARANOID
1124
1125 /**
1126  * paranoid_check_not_bad - ensure that a physical eraseblock is not bad.
1127  * @ubi: UBI device description object
1128  * @pnum: physical eraseblock number to check
1129  *
1130  * This function returns zero if the physical eraseblock is good, %-EINVAL if
1131  * it is bad and a negative error code if an error occurred.
1132  */
1133 static int paranoid_check_not_bad(const struct ubi_device *ubi, int pnum)
1134 {
1135         int err;
1136
1137         err = ubi_io_is_bad(ubi, pnum);
1138         if (!err)
1139                 return err;
1140
1141         ubi_err("paranoid check failed for PEB %d", pnum);
1142         ubi_dbg_dump_stack();
1143         return err > 0 ? -EINVAL : err;
1144 }
1145
1146 /**
1147  * paranoid_check_ec_hdr - check if an erase counter header is all right.
1148  * @ubi: UBI device description object
1149  * @pnum: physical eraseblock number the erase counter header belongs to
1150  * @ec_hdr: the erase counter header to check
1151  *
1152  * This function returns zero if the erase counter header contains valid
1153  * values, and %-EINVAL if not.
1154  */
1155 static int paranoid_check_ec_hdr(const struct ubi_device *ubi, int pnum,
1156                                  const struct ubi_ec_hdr *ec_hdr)
1157 {
1158         int err;
1159         uint32_t magic;
1160
1161         magic = be32_to_cpu(ec_hdr->magic);
1162         if (magic != UBI_EC_HDR_MAGIC) {
1163                 ubi_err("bad magic %#08x, must be %#08x",
1164                         magic, UBI_EC_HDR_MAGIC);
1165                 goto fail;
1166         }
1167
1168         err = validate_ec_hdr(ubi, ec_hdr);
1169         if (err) {
1170                 ubi_err("paranoid check failed for PEB %d", pnum);
1171                 goto fail;
1172         }
1173
1174         return 0;
1175
1176 fail:
1177         ubi_dbg_dump_ec_hdr(ec_hdr);
1178         ubi_dbg_dump_stack();
1179         return -EINVAL;
1180 }
1181
1182 /**
1183  * paranoid_check_peb_ec_hdr - check erase counter header.
1184  * @ubi: UBI device description object
1185  * @pnum: the physical eraseblock number to check
1186  *
1187  * This function returns zero if the erase counter header is all right and and
1188  * a negative error code if not or if an error occurred.
1189  */
1190 static int paranoid_check_peb_ec_hdr(const struct ubi_device *ubi, int pnum)
1191 {
1192         int err;
1193         uint32_t crc, hdr_crc;
1194         struct ubi_ec_hdr *ec_hdr;
1195
1196         ec_hdr = kzalloc(ubi->ec_hdr_alsize, GFP_NOFS);
1197         if (!ec_hdr)
1198                 return -ENOMEM;
1199
1200         err = ubi_io_read(ubi, ec_hdr, pnum, 0, UBI_EC_HDR_SIZE);
1201         if (err && err != UBI_IO_BITFLIPS && err != -EBADMSG)
1202                 goto exit;
1203
1204         crc = crc32(UBI_CRC32_INIT, ec_hdr, UBI_EC_HDR_SIZE_CRC);
1205         hdr_crc = be32_to_cpu(ec_hdr->hdr_crc);
1206         if (hdr_crc != crc) {
1207                 ubi_err("bad CRC, calculated %#08x, read %#08x", crc, hdr_crc);
1208                 ubi_err("paranoid check failed for PEB %d", pnum);
1209                 ubi_dbg_dump_ec_hdr(ec_hdr);
1210                 ubi_dbg_dump_stack();
1211                 err = -EINVAL;
1212                 goto exit;
1213         }
1214
1215         err = paranoid_check_ec_hdr(ubi, pnum, ec_hdr);
1216
1217 exit:
1218         kfree(ec_hdr);
1219         return err;
1220 }
1221
1222 /**
1223  * paranoid_check_vid_hdr - check that a volume identifier header is all right.
1224  * @ubi: UBI device description object
1225  * @pnum: physical eraseblock number the volume identifier header belongs to
1226  * @vid_hdr: the volume identifier header to check
1227  *
1228  * This function returns zero if the volume identifier header is all right, and
1229  * %-EINVAL if not.
1230  */
1231 static int paranoid_check_vid_hdr(const struct ubi_device *ubi, int pnum,
1232                                   const struct ubi_vid_hdr *vid_hdr)
1233 {
1234         int err;
1235         uint32_t magic;
1236
1237         magic = be32_to_cpu(vid_hdr->magic);
1238         if (magic != UBI_VID_HDR_MAGIC) {
1239                 ubi_err("bad VID header magic %#08x at PEB %d, must be %#08x",
1240                         magic, pnum, UBI_VID_HDR_MAGIC);
1241                 goto fail;
1242         }
1243
1244         err = validate_vid_hdr(ubi, vid_hdr);
1245         if (err) {
1246                 ubi_err("paranoid check failed for PEB %d", pnum);
1247                 goto fail;
1248         }
1249
1250         return err;
1251
1252 fail:
1253         ubi_err("paranoid check failed for PEB %d", pnum);
1254         ubi_dbg_dump_vid_hdr(vid_hdr);
1255         ubi_dbg_dump_stack();
1256         return -EINVAL;
1257
1258 }
1259
1260 /**
1261  * paranoid_check_peb_vid_hdr - check volume identifier header.
1262  * @ubi: UBI device description object
1263  * @pnum: the physical eraseblock number to check
1264  *
1265  * This function returns zero if the volume identifier header is all right,
1266  * and a negative error code if not or if an error occurred.
1267  */
1268 static int paranoid_check_peb_vid_hdr(const struct ubi_device *ubi, int pnum)
1269 {
1270         int err;
1271         uint32_t crc, hdr_crc;
1272         struct ubi_vid_hdr *vid_hdr;
1273         void *p;
1274
1275         vid_hdr = ubi_zalloc_vid_hdr(ubi, GFP_NOFS);
1276         if (!vid_hdr)
1277                 return -ENOMEM;
1278
1279         p = (char *)vid_hdr - ubi->vid_hdr_shift;
1280         err = ubi_io_read(ubi, p, pnum, ubi->vid_hdr_aloffset,
1281                           ubi->vid_hdr_alsize);
1282         if (err && err != UBI_IO_BITFLIPS && err != -EBADMSG)
1283                 goto exit;
1284
1285         crc = crc32(UBI_CRC32_INIT, vid_hdr, UBI_EC_HDR_SIZE_CRC);
1286         hdr_crc = be32_to_cpu(vid_hdr->hdr_crc);
1287         if (hdr_crc != crc) {
1288                 ubi_err("bad VID header CRC at PEB %d, calculated %#08x, "
1289                         "read %#08x", pnum, crc, hdr_crc);
1290                 ubi_err("paranoid check failed for PEB %d", pnum);
1291                 ubi_dbg_dump_vid_hdr(vid_hdr);
1292                 ubi_dbg_dump_stack();
1293                 err = -EINVAL;
1294                 goto exit;
1295         }
1296
1297         err = paranoid_check_vid_hdr(ubi, pnum, vid_hdr);
1298
1299 exit:
1300         ubi_free_vid_hdr(ubi, vid_hdr);
1301         return err;
1302 }
1303
1304 /**
1305  * ubi_dbg_check_write - make sure write succeeded.
1306  * @ubi: UBI device description object
1307  * @buf: buffer with data which were written
1308  * @pnum: physical eraseblock number the data were written to
1309  * @offset: offset within the physical eraseblock the data were written to
1310  * @len: how many bytes were written
1311  *
1312  * This functions reads data which were recently written and compares it with
1313  * the original data buffer - the data have to match. Returns zero if the data
1314  * match and a negative error code if not or in case of failure.
1315  */
1316 int ubi_dbg_check_write(struct ubi_device *ubi, const void *buf, int pnum,
1317                         int offset, int len)
1318 {
1319         int err, i;
1320
1321         mutex_lock(&ubi->dbg_buf_mutex);
1322         err = ubi_io_read(ubi, ubi->dbg_peb_buf, pnum, offset, len);
1323         if (err)
1324                 goto out_unlock;
1325
1326         for (i = 0; i < len; i++) {
1327                 uint8_t c = ((uint8_t *)buf)[i];
1328                 uint8_t c1 = ((uint8_t *)ubi->dbg_peb_buf)[i];
1329                 int dump_len;
1330
1331                 if (c == c1)
1332                         continue;
1333
1334                 ubi_err("paranoid check failed for PEB %d:%d, len %d",
1335                         pnum, offset, len);
1336                 ubi_msg("data differ at position %d", i);
1337                 dump_len = max_t(int, 128, len - i);
1338                 ubi_msg("hex dump of the original buffer from %d to %d",
1339                         i, i + dump_len);
1340                 print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_OFFSET, 32, 1,
1341                                buf + i, dump_len, 1);
1342                 ubi_msg("hex dump of the read buffer from %d to %d",
1343                         i, i + dump_len);
1344                 print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_OFFSET, 32, 1,
1345                                ubi->dbg_peb_buf + i, dump_len, 1);
1346                 ubi_dbg_dump_stack();
1347                 err = -EINVAL;
1348                 goto out_unlock;
1349         }
1350         mutex_unlock(&ubi->dbg_buf_mutex);
1351
1352         return 0;
1353
1354 out_unlock:
1355         mutex_unlock(&ubi->dbg_buf_mutex);
1356         return err;
1357 }
1358
1359 /**
1360  * ubi_dbg_check_all_ff - check that a region of flash is empty.
1361  * @ubi: UBI device description object
1362  * @pnum: the physical eraseblock number to check
1363  * @offset: the starting offset within the physical eraseblock to check
1364  * @len: the length of the region to check
1365  *
1366  * This function returns zero if only 0xFF bytes are present at offset
1367  * @offset of the physical eraseblock @pnum, and a negative error code if not
1368  * or if an error occurred.
1369  */
1370 int ubi_dbg_check_all_ff(struct ubi_device *ubi, int pnum, int offset, int len)
1371 {
1372         size_t read;
1373         int err;
1374         loff_t addr = (loff_t)pnum * ubi->peb_size + offset;
1375
1376         mutex_lock(&ubi->dbg_buf_mutex);
1377         err = ubi->mtd->read(ubi->mtd, addr, len, &read, ubi->dbg_peb_buf);
1378         if (err && err != -EUCLEAN) {
1379                 ubi_err("error %d while reading %d bytes from PEB %d:%d, "
1380                         "read %zd bytes", err, len, pnum, offset, read);
1381                 goto error;
1382         }
1383
1384         err = check_pattern(ubi->dbg_peb_buf, 0xFF, len);
1385         if (err == 0) {
1386                 ubi_err("flash region at PEB %d:%d, length %d does not "
1387                         "contain all 0xFF bytes", pnum, offset, len);
1388                 goto fail;
1389         }
1390         mutex_unlock(&ubi->dbg_buf_mutex);
1391
1392         return 0;
1393
1394 fail:
1395         ubi_err("paranoid check failed for PEB %d", pnum);
1396         ubi_msg("hex dump of the %d-%d region", offset, offset + len);
1397         print_hex_dump(KERN_DEBUG, "", DUMP_PREFIX_OFFSET, 32, 1,
1398                        ubi->dbg_peb_buf, len, 1);
1399         err = -EINVAL;
1400 error:
1401         ubi_dbg_dump_stack();
1402         mutex_unlock(&ubi->dbg_buf_mutex);
1403         return err;
1404 }
1405
1406 #endif /* CONFIG_MTD_UBI_DEBUG_PARANOID */