]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/media/radio/si4713-i2c.c
V4L/DVB: media/radio: fix copy_to_user to user handling
[net-next-2.6.git] / drivers / media / radio / si4713-i2c.c
index ab63dd5b25c44798523f51a6b4d88199b9e95c7a..fc7f4b7946498be041778d70486d0a2b721ac7d2 100644 (file)
@@ -1009,8 +1009,10 @@ static int si4713_write_econtrol_string(struct si4713_device *sdev,
                        goto exit;
                }
                rval = copy_from_user(ps_name, control->string, len);
-               if (rval < 0)
+               if (rval) {
+                       rval = -EFAULT;
                        goto exit;
+               }
                ps_name[len] = '\0';
 
                if (strlen(ps_name) % vqc.step) {
@@ -1031,8 +1033,10 @@ static int si4713_write_econtrol_string(struct si4713_device *sdev,
                        goto exit;
                }
                rval = copy_from_user(radio_text, control->string, len);
-               if (rval < 0)
+               if (rval) {
+                       rval = -EFAULT;
                        goto exit;
+               }
                radio_text[len] = '\0';
 
                if (strlen(radio_text) % vqc.step) {
@@ -1367,6 +1371,8 @@ static int si4713_read_econtrol_string(struct si4713_device *sdev,
                }
                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:
@@ -1377,6 +1383,8 @@ static int si4713_read_econtrol_string(struct si4713_device *sdev,
                }
                rval = copy_to_user(control->string, sdev->rds_info.radio_text,
                                        strlen(sdev->rds_info.radio_text) + 1);
+               if (rval)
+                       rval = -EFAULT;
                break;
 
        default: