copy_to/from_user() returns the number of bytes remaining to be copied
but the code here was testing for negative returns. I modified it to
return -EFAULT. These functions are called from si4713_s_ext_ctrls() and
that only tests for negative error codes.
Signed-off-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
goto exit;
}
rval = copy_from_user(ps_name, control->string, len);
goto exit;
}
rval = copy_from_user(ps_name, control->string, len);
+ if (rval) {
+ rval = -EFAULT;
ps_name[len] = '\0';
if (strlen(ps_name) % vqc.step) {
ps_name[len] = '\0';
if (strlen(ps_name) % vqc.step) {
goto exit;
}
rval = copy_from_user(radio_text, control->string, len);
goto exit;
}
rval = copy_from_user(radio_text, control->string, len);
+ if (rval) {
+ rval = -EFAULT;
radio_text[len] = '\0';
if (strlen(radio_text) % vqc.step) {
radio_text[len] = '\0';
if (strlen(radio_text) % vqc.step) {
}
rval = copy_to_user(control->string, sdev->rds_info.ps_name,
strlen(sdev->rds_info.ps_name) + 1);
}
rval = copy_to_user(control->string, sdev->rds_info.ps_name,
strlen(sdev->rds_info.ps_name) + 1);
+ if (rval)
+ rval = -EFAULT;
break;
case V4L2_CID_RDS_TX_RADIO_TEXT:
break;
case V4L2_CID_RDS_TX_RADIO_TEXT:
}
rval = copy_to_user(control->string, sdev->rds_info.radio_text,
strlen(sdev->rds_info.radio_text) + 1);
}
rval = copy_to_user(control->string, sdev->rds_info.radio_text,
strlen(sdev->rds_info.radio_text) + 1);
+ if (rval)
+ rval = -EFAULT;