Skip to contentSkip to conversation

mtd: nand: make more readable panic_nand_wait_ready() and nand_wait_ready()

PATCH In review Eunbong Song 2 participants 2 messages Jan 7, 2014 – Jan 20, 2014

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 mtd: nand: make more readable panic_nand_wait_ready() and nand_wait_ready()

panic_nand_wait_ready() and nand_wait_ready() calls dev_ready() without checking if it exists. This patch add check routine dev_ready() before run dev_ready()
and this makes the code more readable

---
 drivers/mtd/nand/nand_base.c |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)
drivers/mtd/nand/nand_base.c +8 -4
index bd39f7b..110db78 100644
@@ -473,8 +473,10 @@ static void panic_nand_wait_ready(struct mtd_info *mtd, unsigned long timeo)
 
 	/* Wait for the device to get ready */
 	for (i = 0; i < timeo; i++) {
-		if (chip->dev_ready(mtd))
-			break;
+		if(chip->dev_ready){
+			if (chip->dev_ready(mtd))
+				break;
+		}
 		touch_softlockup_watchdog();
 		mdelay(1);
 	}
@@ -493,8 +495,10 @@ void nand_wait_ready(struct mtd_info *mtd)
 	led_trigger_event(nand_led_trigger, LED_FULL);
 	/* Wait until command is processed or timeout occurs */
 	do {
-		if (chip->dev_ready(mtd))
-			break;
+		if(chip->dev_ready){
+			if (chip->dev_ready(mtd))
+				break;
+		}
 		touch_softlockup_watchdog();
 	} while (time_before(jiffies, timeo));
 	led_trigger_event(nand_led_trigger, LED_OFF);
Signature · 2 lines
1.7.0.4
�淸�{.n�+돴윯돪�+%듚�깁負쪐w��{.n�+돴쪐{깸G쳺��{ay����,j�f"톒쉹��묎�z_溫(�쉸듶줷"얎�m����G쳺�◀?솳鈺�&x�~뤳턨O뺞촾퇉v�^�m����띠�◀?뻀�
#1 lore raw
Quoted 2 lines · Eunbong Song

panic_nand_wait_ready() and nand_wait_ready() calls dev_ready() without checking if it exists.

There are many occasions where we call a function pointer without (locally) checking that it is non-NULL. That is by design.

If you see a problem with this behavior, please fix this properly rather than covering it up. This patch will just make faulty drivers spin for 20ms rather than hitting a bug. Instead, you should aim to fix buggy drivers that call dev_ready() without assigning it; or even better, defensively improve nand_base to detect those drivers which are utilizing nand_command_lp() or nand_command() without assigning dev_ready().

Quoted 2 lines

This patch add check routine dev_ready() before run dev_ready() and this makes the code more readable

This patch does not make the code more readable, nor does it improve the state of the original code much. Please solve and document a real problem.

Thanks,
Brian