ctrl = uvc_find_control(chain, v4l2_ctrl->id, &mapping);
        if (ctrl == NULL) {
-               ret = -ENOENT;
+               ret = -EINVAL;
                goto done;
        }
 
                return -ERESTARTSYS;
 
        ctrl = uvc_find_control(chain, query_menu->id, &mapping);
-       if (ctrl == NULL) {
-               ret = -ENOENT;
+       if (ctrl == NULL || mapping->v4l2_type != V4L2_CTRL_TYPE_MENU) {
+               ret = -EINVAL;
                goto done;
        }
 
-       if (mapping->v4l2_type != V4L2_CTRL_TYPE_MENU ||
-           query_menu->index >= mapping->menu_count) {
+       if (query_menu->index >= mapping->menu_count) {
                ret = -EINVAL;
                goto done;
        }
 
        ctrl = uvc_find_control(handle->chain, sev->id, &mapping);
        if (ctrl == NULL) {
-               ret = -ENOENT;
+               ret = -EINVAL;
                goto done;
        }
 
 
        ctrl = uvc_find_control(chain, xctrl->id, &mapping);
        if (ctrl == NULL)
-               return -ENOENT;
+               return -EINVAL;
 
        return __uvc_ctrl_get(chain, ctrl, mapping, &xctrl->value);
 }
        int ret;
 
        ctrl = uvc_find_control(chain, xctrl->id, &mapping);
-       if (ctrl == NULL)
-               return -ENOENT;
-       if (!(ctrl->info.flags & UVC_CTRL_FLAG_SET_CUR))
-               return -EACCES;
+       if (ctrl == NULL || (ctrl->info.flags & UVC_CTRL_FLAG_SET_CUR) == 0)
+               return -EINVAL;
 
        /* Clamp out of range values. */
        switch (mapping->v4l2_type) {
 
 
                ret = uvc_ctrl_get(chain, &xctrl);
                uvc_ctrl_rollback(handle);
-               if (ret < 0)
-                       return ret == -ENOENT ? -EINVAL : ret;
-
-               ctrl->value = xctrl.value;
+               if (ret >= 0)
+                       ctrl->value = xctrl.value;
                break;
        }
 
                ret = uvc_ctrl_set(chain, &xctrl);
                if (ret < 0) {
                        uvc_ctrl_rollback(handle);
-                       return ret == -ENOENT ? -EINVAL : ret;
+                       return ret;
                }
                ret = uvc_ctrl_commit(handle, &xctrl, 1);
                if (ret == 0)
                                uvc_ctrl_rollback(handle);
                                ctrls->error_idx = ret == -ENOENT
                                                 ? ctrls->count : i;
-                               return ret == -ENOENT ? -EINVAL : ret;
+                               return ret;
                        }
                }
                ctrls->error_idx = 0;
                                ctrls->error_idx = (ret == -ENOENT &&
                                                    cmd == VIDIOC_S_EXT_CTRLS)
                                                 ? ctrls->count : i;
-                               return ret == -ENOENT ? -EINVAL : ret;
+                               return ret;
                        }
                }