[PATCH] JFFS2 kernel panics fixup on Sibley
zhao, forrest
forrest.zhao at intel.com
Tue Dec 27 21:00:58 EST 2005
On Tue, 2005-12-27 at 16:07 +0300, Alexey, Korolev wrote:
> =======================================
>
> diff -aur c/fs/jffs2/nodelist.c b/fs/jffs2/nodelist.c
> --- c/fs/jffs2/nodelist.c 2005-12-23 16:43:09.000000000 +0300
> +++ b/fs/jffs2/nodelist.c 2005-12-23 16:48:43.000000000 +0300
> @@ -436,7 +436,7 @@
> * adding and jffs2_flash_read_end() interface. */
> if (c->mtd->point) {
> err = c->mtd->point(c->mtd, ofs, len, &retlen, &buffer);
> - if (!err && retlen < tn->csize) {
> + if (!err && retlen < len) {
> JFFS2_WARNING("MTD point returned len too short: %u instead of
> %u.\n", retlen, tn->csize);
> c->mtd->unpoint(c->mtd, buffer, ofs, len);
> } else if (err)
> diff -aur c/fs/jffs2/scan.c b/fs/jffs2/scan.c
> --- c/fs/jffs2/scan.c 2005-12-23 16:43:09.000000000 +0300
> +++ b/fs/jffs2/scan.c 2005-12-23 16:48:43.000000000 +0300
> @@ -454,7 +454,7 @@
> buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs);
> D1(printk(KERN_DEBUG "Fewer than %zd bytes (node header) left to end
> of buf. Reading 0x%x at 0x%08x\n",
> sizeof(struct jffs2_unknown_node), buf_len, ofs));
> - err = jffs2_flash_read_safe(c, buf_ofs, buf_len, buf);
> + err = jffs2_flash_read_safe(c, ofs, buf_len, buf);
> if (err)
> return err;
> buf_ofs = ofs;
> @@ -511,7 +511,7 @@
> break;
> }
> D1(printk(KERN_DEBUG "Reading another 0x%x at 0x%08x\n", buf_len, ofs));
> - err = jffs2_flash_read_safe(c, buf_ofs, buf_len, buf);
> + err = jffs2_flash_read_safe(c, ofs, buf_len, buf);
> if (err)
> return err;
> buf_ofs = ofs;
> @@ -587,7 +587,7 @@
> buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size -
> ofs);
> D1(printk(KERN_DEBUG "Fewer than %zd bytes (inode node) left to end
> of buf. Reading 0x%x at 0x%08x\n",
> sizeof(struct jffs2_raw_inode), buf_len, ofs));
> - err = jffs2_flash_read_safe(c, buf_ofs, buf_len, buf);
> + err = jffs2_flash_read_safe(c, ofs, buf_len, buf);
> if (err)
> return err;
> buf_ofs = ofs;
> @@ -603,7 +603,7 @@
> buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size -
> ofs);
> D1(printk(KERN_DEBUG "Fewer than %d bytes (dirent node) left to end
> of buf. Reading 0x%x at 0x%08x\n",
> je32_to_cpu(node->totlen), buf_len, ofs));
> - err = jffs2_flash_read_safe(c, buf_ofs, buf_len, buf);
> + err = jffs2_flash_read_safe(c, ofs, buf_len, buf);
> if (err)
> return err;
> buf_ofs = ofs;
> @@ -650,7 +650,7 @@
> } else {
> if (buf_ofs + buf_len < ofs + je32_to_cpu(node->totlen)) {
> buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size -
> ofs);
> - err = jffs2_flash_read_safe(c, buf_ofs, buf_len, buf);
> + err = jffs2_flash_read_safe(c, ofs, buf_len, buf);
> if (err)
> return err;
> buf_ofs = ofs;
Artem,
I reviewed the part of this patch for EBH, the above remaining
part need your review before we could check in the patch to CVS.
Alexey,
I don't have a Sibley flash at hand, so didn't do intensive
test for it. Thank you for the fix.
Thanks,
Forrest
More information about the linux-mtd
mailing list