summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorhujianyang <hujianyang@huawei.com>2014-07-30 10:37:53 +0800
committerArtem Bityutskiy <artem.bityutskiy@linux.intel.com>2014-07-31 15:52:51 +0300
commit25601a3c9737fed554169759582c690b98ead5d4 (patch)
treecd49fa96238af388ba347590b37a439fe7cc0c87 /fs
parent6390e991776ec2519b4505d48dd82b0e88d359d2 (diff)
downloadop-kernel-dev-25601a3c9737fed554169759582c690b98ead5d4.zip
op-kernel-dev-25601a3c9737fed554169759582c690b98ead5d4.tar.gz
UBIFS: Add log overlap assertions
We use a circle area to record the log nodes in ubifs. This log area should not be overlapped. But after researching the code, I found some conditions may lead log head wraps log ltail. Although we've fixed the problems discovered, there may be some other issues still left. This patch adds assertions where lhead changes to next leb to make sure ltail is not wrapped. Signed-off-by: hujianyang <hujianyang@huawei.com> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/ubifs/log.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/ubifs/log.c b/fs/ubifs/log.c
index 518b136..a47ddfc 100644
--- a/fs/ubifs/log.c
+++ b/fs/ubifs/log.c
@@ -240,6 +240,7 @@ int ubifs_add_bud_to_log(struct ubifs_info *c, int jhead, int lnum, int offs)
if (c->lhead_offs > c->leb_size - c->ref_node_alsz) {
c->lhead_lnum = ubifs_next_log_lnum(c, c->lhead_lnum);
+ ubifs_assert(c->lhead_lnum != c->ltail_lnum);
c->lhead_offs = 0;
}
@@ -404,6 +405,7 @@ int ubifs_log_start_commit(struct ubifs_info *c, int *ltail_lnum)
/* Switch to the next log LEB */
if (c->lhead_offs) {
c->lhead_lnum = ubifs_next_log_lnum(c, c->lhead_lnum);
+ ubifs_assert(c->lhead_lnum != c->ltail_lnum);
c->lhead_offs = 0;
}
OpenPOWER on IntegriCloud