mtd: cfi: fix deadloop in cfi_cmdset_0002.c do_write_buffer

In function do_write_buffer(), in the for loop, there is a case
chip_ready() returns 1 while chip_good() returns 0, so it never
break the loop.
To fix this, chip_good() is enough and it should timeout if it stay
bad for a while.

Fixes: dfeae1073583("mtd: cfi_cmdset_0002: Change write buffer to check correct value")
Signed-off-by: Yi Huaijie <yihuaijie@huawei.com>
Signed-off-by: Liu Jian <liujian56@huawei.com>
Reviewed-by: Tokunori Ikegami <ikegami_to@yahoo.co.jp>
Signed-off-by: Richard Weinberger <richard@nod.at>

authored by Liu Jian and committed by Richard Weinberger d9b8a67b 8c2ffd91

Changed files
+5 -1
drivers
mtd
+5 -1
drivers/mtd/chips/cfi_cmdset_0002.c
··· 1876 1876 continue; 1877 1877 } 1878 1878 1879 - if (time_after(jiffies, timeo) && !chip_ready(map, adr)) 1879 + /* 1880 + * We check "time_after" and "!chip_good" before checking "chip_good" to avoid 1881 + * the failure due to scheduling. 1882 + */ 1883 + if (time_after(jiffies, timeo) && !chip_good(map, adr, datum)) 1880 1884 break; 1881 1885 1882 1886 if (chip_good(map, adr, datum)) {