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@xxxxxxxxx> --- 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@xxxxxxxxx> -- -=( Ian Abbott <abbotti@xxxxxxxxx> || 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. )=- _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel