[media] staging/media/solo6x10/v4l2-enc.c: fix error-handling
authorCyril Roelandt <tipecaml@gmail.com>
Fri, 16 Nov 2012 21:17:01 +0000 (18:17 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Wed, 26 Dec 2012 12:04:46 +0000 (10:04 -0200)
The return values of copy_to_user() and copy_from_user() cannot be negative.
Found using the following semantich patch:
<spml>
@exists@
identifier ret;
statement S;
expression E;
@@
(
* ret = copy_to_user(...);
|
* ret = copy_from_user(...);
)
... when != ret = E
    when != if (ret) { <+... ret = E; ...+> }
* if (ret < 0)
  S
</spml>

Signed-off-by: Cyril Roelandt <tipecaml@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/staging/media/solo6x10/v4l2-enc.c

index f8f0da9..4977e86 100644 (file)
@@ -1619,6 +1619,8 @@ static int solo_s_ext_ctrls(struct file *file, void *priv,
                                solo_enc->osd_text[OSD_TEXT_MAX] = '\0';
                                if (!err)
                                        err = solo_osd_print(solo_enc);
+                               else
+                                       err = -EFAULT;
                        }
                        break;
                default:
@@ -1654,6 +1656,8 @@ static int solo_g_ext_ctrls(struct file *file, void *priv,
                                err = copy_to_user(ctrl->string,
                                                   solo_enc->osd_text,
                                                   OSD_TEXT_MAX);
+                               if (err)
+                                       err = -EFAULT;
                        }
                        break;
                default: