mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-25 15:24:17 +08:00
staging: comedi: drivers: core validates chanlist_len max
The comedi core checks if the (cmd->chanlist_len > s->len_chanlist) when the comedi_cmd is copied from user to kernel space by __comedi_get_user_cmd(). If so, the core returns -EINVAL and will not call the subdevice (*do_cmdtest) and (*do_cmd). Remove the unnecessary "max" checks in the comedi driver (*do_cmdtest) and helper functions. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Reviewed-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
5089b05896
commit
860b7c398a
@ -734,7 +734,6 @@ static int apci3120_ai_cmdtest(struct comedi_device *dev,
|
||||
struct comedi_subdevice *s,
|
||||
struct comedi_cmd *cmd)
|
||||
{
|
||||
const struct addi_board *this_board = comedi_board(dev);
|
||||
int err = 0;
|
||||
|
||||
/* Step 1 : check if triggers are trivially valid */
|
||||
@ -779,8 +778,6 @@ static int apci3120_ai_cmdtest(struct comedi_device *dev,
|
||||
}
|
||||
|
||||
err |= cfc_check_trigger_arg_min(&cmd->chanlist_len, 1);
|
||||
err |= cfc_check_trigger_arg_max(&cmd->chanlist_len,
|
||||
this_board->i_AiChannelList);
|
||||
|
||||
if (cmd->stop_src == TRIG_COUNT)
|
||||
err |= cfc_check_trigger_arg_min(&cmd->stop_arg, 1);
|
||||
|
@ -1259,8 +1259,6 @@ static int pci9118_ai_cmdtest(struct comedi_device *dev,
|
||||
err |= cfc_check_trigger_arg_is(&cmd->stop_arg, 0);
|
||||
|
||||
err |= cfc_check_trigger_arg_min(&cmd->chanlist_len, 1);
|
||||
err |= cfc_check_trigger_arg_max(&cmd->chanlist_len,
|
||||
this_board->n_aichanlist);
|
||||
|
||||
err |= cfc_check_trigger_arg_min(&cmd->scan_end_arg,
|
||||
cmd->chanlist_len);
|
||||
|
@ -761,7 +761,6 @@ static int pcl812_ai_cmdtest(struct comedi_device *dev,
|
||||
err |= cfc_check_trigger_arg_is(&cmd->convert_arg, 0);
|
||||
|
||||
err |= cfc_check_trigger_arg_min(&cmd->chanlist_len, 1);
|
||||
err |= cfc_check_trigger_arg_max(&cmd->chanlist_len, MAX_CHANLIST_LEN);
|
||||
err |= cfc_check_trigger_arg_is(&cmd->scan_end_arg, cmd->chanlist_len);
|
||||
|
||||
if (cmd->stop_src == TRIG_COUNT)
|
||||
|
@ -891,10 +891,6 @@ static int rtd_ai_cmdtest(struct comedi_device *dev,
|
||||
|
||||
/* step 4: fix up any arguments */
|
||||
|
||||
if (cmd->chanlist_len > RTD_MAX_CHANLIST) {
|
||||
cmd->chanlist_len = RTD_MAX_CHANLIST;
|
||||
err++;
|
||||
}
|
||||
if (cmd->scan_begin_src == TRIG_TIMER) {
|
||||
tmp = cmd->scan_begin_arg;
|
||||
rtd_ns_to_timer(&cmd->scan_begin_arg,
|
||||
|
Loading…
Reference in New Issue
Block a user