public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH] Fix of broken state in CFI driver caused by FL_SHUTDOWN
@ 2008-04-04  9:06 Alexey Korolev
  2008-04-04  9:34 ` Jörn Engel
  0 siblings, 1 reply; 10+ messages in thread
From: Alexey Korolev @ 2008-04-04  9:06 UTC (permalink / raw)
  To: dwmw2, nico, joern, linux-mtd; +Cc: akpm, haokexin

Hi all,

CFI driver in 2.6.24 kernel is broken. Not so intensive read/write operations cause incomplete writes which lead to kernel panics in JFFS2. 
We investigated the issue - it is caused by bug in FL_SHUTDOWN parsing code. Sometimes chip returns -EIO as if it is in FL_SHUTDOWN state when it should wait in FL_PONT (error in order of conditions).

The following patch fixes the problem. 
Could you please include it?

Signed-off-by: Alexey Korolev <akorolev@infradead.org>

diff -aurpp a/drivers/mtd/chips/cfi_cmdset_0001.c b/drivers/mtd/chips/cfi_cmdset_0001.c
--- a/drivers/mtd/chips/cfi_cmdset_0001.c	2008-02-11 08:51:11.000000000 +0300
+++ b/drivers/mtd/chips/cfi_cmdset_0001.c	2008-04-04 12:46:24.000000000 +0400
@@ -729,14 +729,14 @@ static int chip_ready (struct map_info *
 		chip->state = FL_READY;
 		return 0;
 
+	case FL_SHUTDOWN:
+		/* The machine is rebooting now,so no one can get chip anymore */
+		return -EIO;
 	case FL_POINT:
 		/* Only if there's no operation suspended... */
 		if (mode == FL_READY && chip->oldstate == FL_READY)
 			return 0;
 
-	case FL_SHUTDOWN:
-		/* The machine is rebooting now,so no one can get chip anymore */
-		return -EIO;
 	default:
 	sleep:
 		set_current_state(TASK_UNINTERRUPTIBLE);

Thanks,
Alexey

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2008-04-10 16:57 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-04-04  9:06 [PATCH] Fix of broken state in CFI driver caused by FL_SHUTDOWN Alexey Korolev
2008-04-04  9:34 ` Jörn Engel
2008-04-04 12:10   ` Alexey Korolev
2008-04-04 12:21   ` Alexey Korolev
2008-04-05  3:46     ` Kevin Hao
2008-04-09 22:57     ` Joakim Tjernlund
2008-04-09 23:01       ` Andrew Morton
     [not found]     ` <009801c89a95$09ae4680$1d0ad380$%Tjernlund@transmode.se>
2008-04-09 23:02       ` Nicolas Pitre
2008-04-09 23:08         ` Joakim Tjernlund
2008-04-10 16:57         ` Alexey Korolev

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox