diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2018-10-08 13:06:41 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2018-10-08 13:16:35 +1000 |
commit | b3244827d97c6659842544b9cc175631e13ae8f3 (patch) | |
tree | 85a281282902a138e93e2a7ffab8b0a0e3d820b4 | |
parent | 3370b6b6a41a27123a45b95ba4820395127c84e7 (diff) |
Fix ioctl return value handling
Found by coverity
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
-rw-r--r-- | src/v4l.c | 15 |
1 files changed, 9 insertions, 6 deletions
@@ -769,12 +769,15 @@ V4lSetPortAttribute(ScrnInfoPtr pScrn, } else if (attribute == xvFreq) { struct v4l2_frequency freq; memset(&freq, 0, sizeof(freq)); - ioctl(V4L_FD, VIDIOC_G_FREQUENCY, &freq); - freq.frequency = value; - if (ioctl(V4L_FD, VIDIOC_S_FREQUENCY, &freq) == -1) - xf86Msg(X_ERROR, "v4l: Error %d while setting frequency\n", errno); - else - ret = Success; + if (ioctl(V4L_FD, VIDIOC_G_FREQUENCY, &freq) == -1) { + xf86Msg(X_ERROR, "v4l: Error %d while getting frequency\n", errno); + } else { + freq.frequency = value; + if (ioctl(V4L_FD, VIDIOC_S_FREQUENCY, &freq) == -1) + xf86Msg(X_ERROR, "v4l: Error %d while setting frequency\n", errno); + else + ret = Success; + } } else { for (i = 0; i < pPPriv->n_qctrl; i++) if (pPPriv->XvV4LCtrl[i].xv == attribute) |