Re: [PATCH 2.6.32.y] staging: comedi: ni_65xx: (bug fix) confine insn_bits to one subdevice

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Oct 10, 2013 at 10:55:58AM +0100, Ian Abbott wrote:
> Commit 677a31565692d596ef42ea589b53ba289abf4713 upstream.
> 
> The `insn_bits` handler `ni_65xx_dio_insn_bits()` has a `for` loop that
> currently writes (optionally) and reads back up to 5 "ports" consisting
> of 8 channels each.  It reads up to 32 1-bit channels but can only read
> and write a whole port at once - it needs to handle up to 5 ports as the
> first channel it reads might not be aligned on a port boundary.  It
> breaks out of the loop early if the next port it handles is beyond the
> final port on the card.  It also breaks out early on the 5th port in the
> loop if the first channel was aligned.  Unfortunately, it doesn't check
> that the current port it is dealing with belongs to the comedi subdevice
> the `insn_bits` handler is acting on.  That's a bug.
> 
> Redo the `for` loop to terminate after the final port belonging to the
> subdevice, changing the loop variable in the process to simplify things
> a bit.  The `for` loop could now try and handle more than 5 ports if the
> subdevice has more than 40 channels, but the test `if (bitshift >= 32)`
> ensures it will break out early after 4 or 5 ports (depending on whether
> the first channel is aligned on a port boundary).  (`bitshift` will be
> between -7 and 7 inclusive on the first iteration, increasing by 8 for
> each subsequent operation.)
> 
> Signed-off-by: Ian Abbott <abbotti@xxxxxxxxx>

Patch queued for .62, thank you Ian.

Willy

--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]