| From a42ae5905140c324362fe5036ae1dbb16e4d359c Mon Sep 17 00:00:00 2001 |
| From: Frank Mori Hess <fmh6jj@gmail.com> |
| Date: Thu, 15 Feb 2018 15:13:42 -0500 |
| Subject: staging: comedi: fix comedi_nsamples_left. |
| |
| From: Frank Mori Hess <fmh6jj@gmail.com> |
| |
| commit a42ae5905140c324362fe5036ae1dbb16e4d359c upstream. |
| |
| A rounding error was causing comedi_nsamples_left to |
| return the wrong value when nsamples was not a multiple |
| of the scan length. |
| |
| Cc: <stable@vger.kernel.org> # v4.4+ |
| Signed-off-by: Frank Mori Hess <fmh6jj@gmail.com> |
| Reviewed-by: Ian Abbott <abbotti@mev.co.uk> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/staging/comedi/drivers.c | 3 +-- |
| 1 file changed, 1 insertion(+), 2 deletions(-) |
| |
| --- a/drivers/staging/comedi/drivers.c |
| +++ b/drivers/staging/comedi/drivers.c |
| @@ -484,8 +484,7 @@ unsigned int comedi_nsamples_left(struct |
| struct comedi_cmd *cmd = &async->cmd; |
| |
| if (cmd->stop_src == TRIG_COUNT) { |
| - unsigned int nscans = nsamples / cmd->scan_end_arg; |
| - unsigned int scans_left = __comedi_nscans_left(s, nscans); |
| + unsigned int scans_left = __comedi_nscans_left(s, cmd->stop_arg); |
| unsigned int scan_pos = |
| comedi_bytes_to_samples(s, async->scan_progress); |
| unsigned long long samples_left = 0; |