Merge "radio: iris: Checking if driver's buffer is large enough."
This commit is contained in:
commit
fb45428116
|
@ -3914,18 +3914,35 @@ static int iris_vidioc_s_ctrl(struct file *file, void *priv,
|
|||
radio->riva_data_req.cmd_params.start_addr = ctrl->value;
|
||||
break;
|
||||
case V4L2_CID_PRIVATE_IRIS_RIVA_ACCS_LEN:
|
||||
radio->riva_data_req.cmd_params.length = ctrl->value;
|
||||
if ((ctrl->value > 0) &&
|
||||
(ctrl->value <= MAX_RIVA_PEEK_RSP_SIZE)) {
|
||||
radio->riva_data_req.cmd_params.length = ctrl->value;
|
||||
} else {
|
||||
FMDERR("Length %d is more than the buffer size %d\n",
|
||||
ctrl->value, MAX_RIVA_PEEK_RSP_SIZE);
|
||||
retval = -EINVAL;
|
||||
}
|
||||
break;
|
||||
case V4L2_CID_PRIVATE_IRIS_RIVA_POKE:
|
||||
retval = copy_from_user(radio->riva_data_req.data,
|
||||
if (radio->riva_data_req.cmd_params.length <=
|
||||
MAX_RIVA_PEEK_RSP_SIZE) {
|
||||
retval = copy_from_user(
|
||||
radio->riva_data_req.data,
|
||||
(void *)ctrl->value,
|
||||
radio->riva_data_req.cmd_params.length);
|
||||
if (retval != 0) {
|
||||
retval = -retval;
|
||||
break;
|
||||
if (retval != 0) {
|
||||
retval = -retval;
|
||||
break;
|
||||
}
|
||||
radio->riva_data_req.cmd_params.subopcode =
|
||||
RIVA_POKE_OPCODE;
|
||||
retval = hci_poke_data(
|
||||
&radio->riva_data_req,
|
||||
radio->fm_hdev);
|
||||
} else {
|
||||
FMDERR("Can not copy into driver's buffer.\n");
|
||||
retval = -EINVAL;
|
||||
}
|
||||
radio->riva_data_req.cmd_params.subopcode = RIVA_POKE_OPCODE;
|
||||
retval = hci_poke_data(&radio->riva_data_req , radio->fm_hdev);
|
||||
break;
|
||||
case V4L2_CID_PRIVATE_IRIS_SSBI_ACCS_ADDR:
|
||||
radio->ssbi_data_accs.start_addr = ctrl->value;
|
||||
|
|
Loading…
Reference in New Issue