staging: comedi: dt282x: dt282x_ai_insn_read() always fails
Subsystems (2)
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
@@ -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);
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-ETIMEand the function never succeeds.Signed-off-by Dan Carpenter <[email protected]>---
This macro is very ugly, btw.drivers/staging/comedi/drivers/dt282x.c +0
-0
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 )=-