Skip to contentSkip to conversation

staging: comedi: dt282x: dt282x_ai_insn_read() always fails

PATCH In review Dan Carpenter 2 participants 2 messages Aug 20, 2013

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

PATCH 1/1 staging: comedi: dt282x: dt282x_ai_insn_read() always fails

In dt282x_ai_insn_read() we call this macro like:
wait_for(!mux_busy(), comedi_error(dev, "timeout\n"); return -ETIME;); Because the if statement doesn't have curly braces it means we always return -ETIME and the function never succeeds.

---
This macro is very ugly, btw.

drivers/staging/comedi/drivers/dt282x.c +2 -1
index 23cb0335..4a25382 100644
@@ -267,8 +267,9 @@ struct dt282x_private {
 			}					\
 			udelay(5);				\
 		}						\
-		if (_i)						\
+		if (_i) {					\
 			b					\
+		}						\
 	} while (0)
 
 static int prep_ai_dma(struct comedi_device *dev, int chan, int size);
Acked-by on v1 1/1
#1 lore raw
Quoted 15 lines · Dan Carpenter

In dt282x_ai_insn_read() we call this macro like:
wait_for(!mux_busy(), comedi_error(dev, "timeout\n"); return -ETIME;); Because the if statement doesn't have curly braces it means we always return -ETIME and the function never succeeds.

---
This macro is very ugly, btw.

drivers/staging/comedi/drivers/dt282x.c +0 -0
index 23cb0335..4a25382 100644

drivers/staging/comedi/drivers/dt282x.c struct dt282x_private { · line 275

Quoted 10 lines
drivers/staging/comedi/drivers/dt282x.c +2 -1
@@ -267,8 +267,9 @@ struct dt282x_private {
  			}					\
  			udelay(5);				\
  		}						\
-		if (_i)						\
+		if (_i) {					\
  			b					\
+		}						\
  	} while (0)
 
  static int prep_ai_dma(struct comedi_device *dev, int chan, int size);

The bug was introduced by commit 18e7e78e945527d9cb570a17f0835815f1794c2f in mainline. And yes, it is ugly.

Signature · 2 lines
-=( Ian Abbott @ MEV Ltd.    E-mail: <[email protected]>        )=-
-=( Tel: +44 (0)161 477 1898   FAX: +44 (0)161 718 3587         )=-