[PATCH] separate routine to check jffs2_flash_read
pierre.ricadat@utbm.fr
Pierre.Ricadat at utbm.fr
Mon Oct 31 10:16:17 EST 2005
Quoting Jörn Engel <joern at wohnheim.fh-wedel.de>:
> On Mon, 31 October 2005 11:12:06 +0100, pierre.ricadat at utbm.fr wrote:
> >
> > -free_out:
> > - if(!pointed)
> > - kfree(buffer);
> > -#ifndef __ECOS
> > - else
> > - c->mtd->unpoint(c->mtd, buffer, ofs, len);
> > -#endif
> > - return err;
> > }
>
> Nowhere in jffs2_flash_read_safe() do you call c->mtd->unpoint. So
> obviously your code is not equivalent to the existing. Can you look
> into it and see what needs to be don?
In fact the only place where we goto free_out was there :
@ line 449:
if (!pointed) {
buffer = kmalloc(len, GFP_KERNEL);
if (unlikely(!buffer))
return -ENOMEM;
/* TODO: this is very frequent pattern, make it a separate
* routine */
err = jffs2_flash_read(c, ofs, len, &retlen, buffer);
if (err) {
JFFS2_ERROR("can not read %d bytes from 0x%08x, error code: %d.\n", len, ofs,
err);
goto free_out;
}
if (retlen != len) {
JFFS2_ERROR("short read at %#08x: %d instead of %d.\n", ofs, retlen, len);
err = -EIO;
goto free_out;
}
}
The goto free_out was located in a if(!pointed), so the if(!pointed) in the
free_out will always be true, and c->mtd->unpoint will never be called.
--
Pierre Ricadat
More information about the linux-mtd
mailing list