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

staging: comedi: addi_apci_1500: fix array access out of bounds error

The private data 'pm', 'pt', and 'pp' array members hold the trigger mode
parameters for ports A and B. Both ports are 8-bits and the arrays are 16-bits.
Array index 0 defines the AND mode and index 1 the OR mode parameters for both
ports.

The valid triggers to start the async command are 0 to 3 which select the
AND/OR mode for each port.

The 'pb_trig' (the array index for port B) in apci1500_di_inttrig_start() is
incorrect and results in an index of 0 or 2. Fix the calc so that the correct
index (0/1) is used.
Signed-off-by: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Reported-by: default avatarAsaf Vertz <asaf.vertz@tandemg.com>
Reviewed-by: default avatarIan Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b5d78b7f
......@@ -296,7 +296,7 @@ static int apci1500_di_inttrig_start(struct comedi_device *dev,
unsigned int pa_mode = Z8536_PAB_MODE_PMS_DISABLE;
unsigned int pb_mode = Z8536_PAB_MODE_PMS_DISABLE;
unsigned int pa_trig = trig_num & 0x01;
unsigned int pb_trig = trig_num & 0x02;
unsigned int pb_trig = (trig_num >> 1) & 0x01;
bool valid_trig = false;
unsigned int val;
......
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