staging: comedi: ni_mio_common: fix M Series ni_ai_insn_read() data mask
authorIan Abbott <abbotti@mev.co.uk>
Mon, 14 Nov 2016 20:16:21 +0000 (20:16 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 15 Nov 2016 10:04:21 +0000 (11:04 +0100)
For NI M Series cards, the Comedi `insn_read` handler for the AI
subdevice is broken due to ANDing the value read from the AI FIFO data
register with an incorrect mask.  The incorrect mask clears all but the
most significant bit of the sample data.  It should preserve all the
sample data bits.  Correct it.

Fixes: 817144ae7fda ("staging: comedi: ni_mio_common: remove unnecessary use of 'board->adbits'")
Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Cc: <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/ni_mio_common.c

index 9812508fe8d3aeeed6dc9a6386b62f9ea31b515c..95435395c746cee9261604ea2fc2a8587d07eb95 100644 (file)
@@ -1832,7 +1832,7 @@ static int ni_ai_insn_read(struct comedi_device *dev,
                           unsigned int *data)
 {
        struct ni_private *devpriv = dev->private;
-       unsigned int mask = (s->maxdata + 1) >> 1;
+       unsigned int mask = s->maxdata;
        int i, n;
        unsigned int signbits;
        unsigned int d;