diff options
author | Artem Bityutskiy <Artem.Bityutskiy@nokia.com> | 2011-03-18 12:11:42 -0400 |
---|---|---|
committer | Artem Bityutskiy <Artem.Bityutskiy@nokia.com> | 2011-04-05 04:08:58 -0400 |
commit | 3efe509070e3d27e6d5dbc4bf8588e9453e9b949 (patch) | |
tree | d383315c70461be6e6366c6e8142db95e113a12b | |
parent | 7da6443aca9be29c6948dcbd636ad50154d0bc0c (diff) |
UBI: check if we are in RO mode in the erase routine
'do_sync_erase()' has to check whether we are in R/O mode before
erasing the PEB. This patch adds the check and while on it, adds an
assertion which validates the 'pnum' argument, as well as removes
a check which is always true because it has already been done
few lines before.
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
-rw-r--r-- | drivers/mtd/ubi/io.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/mtd/ubi/io.c b/drivers/mtd/ubi/io.c index eededf94f5a6..e347cc4388ed 100644 --- a/drivers/mtd/ubi/io.c +++ b/drivers/mtd/ubi/io.c | |||
@@ -344,6 +344,12 @@ static int do_sync_erase(struct ubi_device *ubi, int pnum) | |||
344 | wait_queue_head_t wq; | 344 | wait_queue_head_t wq; |
345 | 345 | ||
346 | dbg_io("erase PEB %d", pnum); | 346 | dbg_io("erase PEB %d", pnum); |
347 | ubi_assert(pnum >= 0 && pnum < ubi->peb_count); | ||
348 | |||
349 | if (ubi->ro_mode) { | ||
350 | ubi_err("read-only mode"); | ||
351 | return -EROFS; | ||
352 | } | ||
347 | 353 | ||
348 | retry: | 354 | retry: |
349 | init_waitqueue_head(&wq); | 355 | init_waitqueue_head(&wq); |
@@ -390,7 +396,7 @@ retry: | |||
390 | if (err) | 396 | if (err) |
391 | return err; | 397 | return err; |
392 | 398 | ||
393 | if (ubi_dbg_is_erase_failure() && !err) { | 399 | if (ubi_dbg_is_erase_failure()) { |
394 | dbg_err("cannot erase PEB %d (emulated)", pnum); | 400 | dbg_err("cannot erase PEB %d (emulated)", pnum); |
395 | return -EIO; | 401 | return -EIO; |
396 | } | 402 | } |