diff options
author | Joakim Tjernlund <joakim.tjernlund@transmode.se> | 2006-11-28 18:11:52 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-11-28 20:26:50 -0500 |
commit | 967bf623e9f5eecfb056b1ba7e0efd74a21c9c3a (patch) | |
tree | 256413b403e8aa720050e5da858c5d13a7c45869 | |
parent | ba8379b220509e9448c00a77cf6c15ac2a559cc7 (diff) |
[PATCH] Fix Intel/Sharp command set erase suspend bug
When we sleep and wait for a suspended operation to be resumed, go
back and check until it's ready -- don't just continue after the first
time we're woken. This can cause file system corruption.
Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | drivers/mtd/chips/cfi_cmdset_0001.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/mtd/chips/cfi_cmdset_0001.c b/drivers/mtd/chips/cfi_cmdset_0001.c index 7ea49a0d5ec3..296159ec5189 100644 --- a/drivers/mtd/chips/cfi_cmdset_0001.c +++ b/drivers/mtd/chips/cfi_cmdset_0001.c | |||
@@ -1087,7 +1087,7 @@ static int inval_cache_and_wait_for_operation( | |||
1087 | } | 1087 | } |
1088 | spin_lock(chip->mutex); | 1088 | spin_lock(chip->mutex); |
1089 | 1089 | ||
1090 | if (chip->state != chip_state) { | 1090 | while (chip->state != chip_state) { |
1091 | /* Someone's suspended the operation: sleep */ | 1091 | /* Someone's suspended the operation: sleep */ |
1092 | DECLARE_WAITQUEUE(wait, current); | 1092 | DECLARE_WAITQUEUE(wait, current); |
1093 | set_current_state(TASK_UNINTERRUPTIBLE); | 1093 | set_current_state(TASK_UNINTERRUPTIBLE); |