Skip to content

Commit

Permalink
staging: comedi: pcl818: Fix endian problem for AI command data
Browse files Browse the repository at this point in the history
commit 148e34f upstream.

The analog input subdevice supports Comedi asynchronous commands that
use Comedi's 16-bit sample format.  However, the call to
`comedi_buf_write_samples()` is passing the address of a 32-bit integer
parameter.  On bigendian machines, this will copy 2 bytes from the wrong
end of the 32-bit value.  Fix it by changing the type of the parameter
holding the sample value to `unsigned short`.

[Note: the bug was introduced in commit edf4537 ("staging: comedi:
pcl818: use comedi_buf_write_samples()") but the patch applies better to
commit d615416 ("staging: comedi: pcl818: introduce
pcl818_ai_write_sample()").]

Fixes: d615416 ("staging: comedi: pcl818: introduce pcl818_ai_write_sample()")
Cc: <stable@vger.kernel.org> # 4.0+
Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Link: https://lore.kernel.org/r/20210223143055.257402-10-abbotti@mev.co.uk
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
ian-abbott authored and gregkh committed Mar 17, 2021
1 parent bc44630 commit 69eba6d
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion drivers/staging/comedi/drivers/pcl818.c
Expand Up @@ -423,7 +423,7 @@ static int pcl818_ai_eoc(struct comedi_device *dev,

static bool pcl818_ai_write_sample(struct comedi_device *dev,
struct comedi_subdevice *s,
unsigned int chan, unsigned int val)
unsigned int chan, unsigned short val)
{
struct pcl818_private *devpriv = dev->private;
struct comedi_cmd *cmd = &s->async->cmd;
Expand Down

0 comments on commit 69eba6d

Please sign in to comment.