mmc: block: fix a bug of error handling in MMC driver
authorKOBAYASHI Yoshitake <yoshitake.kobayashi@toshiba.co.jp>
Sat, 6 Jul 2013 22:35:45 +0000 (07:35 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 8 Dec 2013 15:29:27 +0000 (07:29 -0800)
commit604ae797e7cd1eca7897eac555961a5a25a9bde5
treedc8607efb4c0f660808946b2a849d4b694b222aa
parentbdd0a8e5ace90cad14c1bf1bf49c3bfabb77f831
mmc: block: fix a bug of error handling in MMC driver

commit c8760069627ad3b0dbbea170f0c4c58b16e18d3d upstream.

Current MMC driver doesn't handle generic error (bit19 of device
status) in write sequence. As a result, write data gets lost when
generic error occurs. For example, a generic error when updating a
filesystem management information causes a loss of write data and
corrupts the filesystem. In the worst case, the system will never
boot.

This patch includes the following functionality:
  1. To enable error checking for the response of CMD12 and CMD13
     in write command sequence
  2. To retry write sequence when a generic error occurs

Messages are added for v2 to show what occurs.

Signed-off-by: KOBAYASHI Yoshitake <yoshitake.kobayashi@toshiba.co.jp>
Signed-off-by: Chris Ball <cjb@laptop.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/mmc/card/block.c