From 59d8235be2ab38ddaffbe9137385095a5e8b0a77 Mon Sep 17 00:00:00 2001 From: Andy Lowe Date: Fri, 12 Jan 2007 18:05:24 -0500 Subject: [PATCH] [JFFS2] Fix unpoint length Fix a couple of instances in JFFS2 where the unpoint() routine is being called with the wrong length in cases where the point() routine truncated a request. Signed-off-by: Andy Lowe Signed-off-by: Nicolas Pitre Signed-off-by: David Woodhouse --- fs/jffs2/erase.c | 2 +- fs/jffs2/readinode.c | 2 +- fs/jffs2/scan.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/jffs2/erase.c b/fs/jffs2/erase.c index addd3fc0e8..a1db918063 100644 --- a/fs/jffs2/erase.c +++ b/fs/jffs2/erase.c @@ -340,7 +340,7 @@ static int jffs2_block_check_erase(struct jffs2_sb_info *c, struct jffs2_erasebl if (retlen < c->sector_size) { /* Don't muck about if it won't let us point to the whole erase sector */ D1(printk(KERN_DEBUG "MTD point returned len too short: 0x%zx\n", retlen)); - c->mtd->unpoint(c->mtd, ebuf, jeb->offset, c->sector_size); + c->mtd->unpoint(c->mtd, ebuf, jeb->offset, retlen); goto do_flash_read; } wordebuf = ebuf-sizeof(*wordebuf); diff --git a/fs/jffs2/readinode.c b/fs/jffs2/readinode.c index 8d4319c56b..2eae5d2dbe 100644 --- a/fs/jffs2/readinode.c +++ b/fs/jffs2/readinode.c @@ -65,7 +65,7 @@ static int check_node_data(struct jffs2_sb_info *c, struct jffs2_tmp_dnode_info err = c->mtd->point(c->mtd, ofs, len, &retlen, &buffer); if (!err && retlen < tn->csize) { JFFS2_WARNING("MTD point returned len too short: %zu instead of %u.\n", retlen, tn->csize); - c->mtd->unpoint(c->mtd, buffer, ofs, len); + c->mtd->unpoint(c->mtd, buffer, ofs, retlen); } else if (err) JFFS2_WARNING("MTD point failed: error code %d.\n", err); else diff --git a/fs/jffs2/scan.c b/fs/jffs2/scan.c index 59dd408e54..35ef8d8336 100644 --- a/fs/jffs2/scan.c +++ b/fs/jffs2/scan.c @@ -101,7 +101,7 @@ int jffs2_scan_medium(struct jffs2_sb_info *c) if (!ret && pointlen < c->mtd->size) { /* Don't muck about if it won't let us point to the whole flash */ D1(printk(KERN_DEBUG "MTD point returned len too short: 0x%zx\n", pointlen)); - c->mtd->unpoint(c->mtd, flashbuf, 0, c->mtd->size); + c->mtd->unpoint(c->mtd, flashbuf, 0, pointlen); flashbuf = NULL; } if (ret) -- 2.39.5