Commit 3fddb6c9 authored by David Woodhouse's avatar David Woodhouse
Browse files

[JFFS2] Don't advance c->wbuf_ofs to next eraseblock after wbuf flush



After flushing the last page of an eraseblock, don't leave the
wbuf 'offset' field pointing at the start of the next physical
eraseblock. This was causing a BUG() on NOR-ECC (Sibley) flash, where
we start writing a little further in, after the cleanmarker.

Debugged by Alexander Belyakov <abelyako@googlemail.com>

Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
parent 693ef66d
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -637,7 +637,10 @@ static int __jffs2_flush_wbuf(struct jffs2_sb_info *c, int pad)

	memset(c->wbuf,0xff,c->wbuf_pagesize);
	/* adjust write buffer offset, else we get a non contiguous write bug */
	if (SECTOR_ADDR(c->wbuf_ofs) == SECTOR_ADDR(c->wbuf_ofs+c->wbuf_pagesize))
		c->wbuf_ofs += c->wbuf_pagesize;
	else
		c->wbuf_ofs = 0xffffffff;
	c->wbuf_len = 0;
	return 0;
}