From patchwork Tue Sep 16 08:10:13 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: mtdoops at panic Date: Mon, 15 Sep 2008 22:10:13 -0000 From: "Edgar E. Iglesias" X-Patchwork-Id: 299 Message-Id: <20080916081013.GD29650@edgar.se.axis.com> To: linux-mtd@lists.infradead.org Hello, While trying out the mtdoops module I ran into trouble when logging at panic. Turns out that the mtdoops_inc_counter can sleep while preparing for the next entry. This small patch works fine for me. Signed-off-by: Edgar E. Iglesias diff --git a/drivers/mtd/mtdoops.c b/drivers/mtd/mtdoops.c index 5a680e1..de6d151 100644 --- a/drivers/mtd/mtdoops.c +++ b/drivers/mtd/mtdoops.c @@ -208,7 +208,12 @@ static void mtdoops_write(struct mtdoops_context *cxt, int panic) printk(KERN_ERR "mtdoops: Write failure at %d (%td of %d written), err %d.\n", cxt->nextpage * OOPS_PAGE_SIZE, retlen, OOPS_PAGE_SIZE, ret); - mtdoops_inc_counter(cxt); + /* + * Prepare for next log-entry. If we are in panic we'll defer this + * step to after reboot because mtdoops_inc_counter might sleep. + */ + if (!panic) + mtdoops_inc_counter(cxt); }