diff options
Diffstat (limited to 'drivers/media/usb/uvc/uvc_ctrl.c')
| -rw-r--r-- | drivers/media/usb/uvc/uvc_ctrl.c | 15 | 
1 files changed, 7 insertions, 8 deletions
diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c index 516a5b188ea5..d5baab17a5ef 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -1061,7 +1061,7 @@ int uvc_query_v4l2_ctrl(struct uvc_video_chain *chain,  	ctrl = uvc_find_control(chain, v4l2_ctrl->id, &mapping);  	if (ctrl == NULL) { -		ret = -ENOENT; +		ret = -EINVAL;  		goto done;  	} @@ -1099,13 +1099,12 @@ int uvc_query_v4l2_menu(struct uvc_video_chain *chain,  		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;  	} @@ -1264,7 +1263,7 @@ static int uvc_ctrl_add_event(struct v4l2_subscribed_event *sev, unsigned elems)  	ctrl = uvc_find_control(handle->chain, sev->id, &mapping);  	if (ctrl == NULL) { -		ret = -ENOENT; +		ret = -EINVAL;  		goto done;  	} @@ -1415,7 +1414,7 @@ int uvc_ctrl_get(struct uvc_video_chain *chain,  	ctrl = uvc_find_control(chain, xctrl->id, &mapping);  	if (ctrl == NULL) -		return -ENOENT; +		return -EINVAL;  	return __uvc_ctrl_get(chain, ctrl, mapping, &xctrl->value);  } @@ -1433,7 +1432,7 @@ int uvc_ctrl_set(struct uvc_video_chain *chain,  	ctrl = uvc_find_control(chain, xctrl->id, &mapping);  	if (ctrl == NULL) -		return -ENOENT; +		return -EINVAL;  	if (!(ctrl->info.flags & UVC_CTRL_FLAG_SET_CUR))  		return -EACCES;  |