Commit accb298f authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman

staging: comedi: ni_nio_common: don't write non-existing caldac's

ni_write_caldac() checks the boardinfo 'caldac' array to determine what
caldac is used for a given 'addr'. It then calculates the 'bitstring' and
number of 'bits' used to write a value to that caldac address.

After checking the caldac array, if the number of bits is 0 there is no
caldac associated with the address. If this happens we shouldn't try
writing to the non-existing caldac.

Reported-by: coverity (CID 1192116)
Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: default avatarIan Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b3ab6fbf
...@@ -4355,6 +4355,10 @@ static void ni_write_caldac(struct comedi_device *dev, int addr, int val) ...@@ -4355,6 +4355,10 @@ static void ni_write_caldac(struct comedi_device *dev, int addr, int val)
addr -= caldacs[type].n_chans; addr -= caldacs[type].n_chans;
} }
/* bits will be 0 if there is no caldac for the given addr */
if (bits == 0)
return;
for (bit = 1 << (bits - 1); bit; bit >>= 1) { for (bit = 1 << (bits - 1); bit; bit >>= 1) {
ni_writeb(dev, ((bit & bitstring) ? 0x02 : 0), Serial_Command); ni_writeb(dev, ((bit & bitstring) ? 0x02 : 0), Serial_Command);
udelay(1); udelay(1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment