[PATCH v2] staging: comedi: change do_insn*_ioctl to allow more samples

Ian Abbott abbotti at mev.co.uk
Mon Dec 10 11:02:00 UTC 2018


On 04/12/2018 19:07, Spencer E. Olson wrote:
> Changes do_insn*_ioctl functions to allow for data lengths for each
> comedi_insn of up to 2^16.  This patch also changes these functions to only
> allocate as much memory as is necessary for each comedi_insn, rather than
> allocating a fixed-sized scratch space.
> 
> In testing some user-space code for the new INSN_DEVICE_CONFIG_GET_ROUTES
> facility with some newer hardware, I discovered that do_insn_ioctl and
> do_insnlist_ioctl limited the amount of data that can be passed into the
> kernel for insn's to a length of 256.  For some newer hardware, the number
> of routes can be greater than 1000.  Working around the old limits (256)
> would complicate the user-space/kernel interaction.
> 
> The new upper limit is reasonable with current memory available and does
> not otherwise impact the memory footprint for any current or otherwise
> typical configuration.
> 
> Signed-off-by: Spencer E. Olson <olsonse at umich.edu>
> ---
> Implements Ian's suggestions to:
> 1) Provide a minimum amount of space to allocate (16*sizeof(uint)) to protect
>     drivers that do not (yet) check the size of the instruction data (Ian has
>     submitted several patches fixing this for other drivers already).  In case
>     insn.n does not get set, this minimum amount also avoids trying to allocate
>     zero-length data.
> 2) Allocate the maximum required space needed for any of the instructions in an
>     instruction list before executing the list of instructions (this, rather than
>     allocating and freeing memory separately while iterating through the
>     instruction list and executing each instruction).
> 
>   drivers/staging/comedi/comedi_fops.c | 48 ++++++++++++++++++----------
>   1 file changed, 31 insertions(+), 17 deletions(-)
> 

Looks good, thanks!  (I still need to crack on and fix up the remaining 
drivers that ignore insn->n.)

Reviewed-by: Ian Abbott <abbotti at mev.co.uk>

-- 
-=( Ian Abbott <abbotti at mev.co.uk> || Web: www.mev.co.uk )=-
-=( MEV Ltd. is a company registered in England & Wales. )=-
-=( Registered number: 02862268.  Registered address:    )=-
-=( 15 West Park Road, Bramhall, STOCKPORT, SK7 3JZ, UK. )=-


More information about the devel mailing list