From patchwork Tue Oct 17 14:53:53 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ricardo Ribalda Delgado X-Patchwork-Id: 10012231 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 077AE60235 for ; Tue, 17 Oct 2017 14:54:15 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F1FCE28886 for ; Tue, 17 Oct 2017 14:54:14 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E5EBC2888D; Tue, 17 Oct 2017 14:54:14 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.5 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9603128886 for ; Tue, 17 Oct 2017 14:54:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1762936AbdJQOx7 (ORCPT ); Tue, 17 Oct 2017 10:53:59 -0400 Received: from mail-lf0-f65.google.com ([209.85.215.65]:54299 "EHLO mail-lf0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757147AbdJQOx6 (ORCPT ); Tue, 17 Oct 2017 10:53:58 -0400 Received: by mail-lf0-f65.google.com with SMTP id d10so2327713lfg.11; Tue, 17 Oct 2017 07:53:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=CZY09TnMUFVEFWuNR4C7qPCTGcTFTXRQ96hBw8GU84o=; b=Xc6kDUnh9Z3VShVuVYUW8TCAQVWYFW1k4k4DENVpqBThEm2kMa/OgwLUGV53MuSSdR uvovU8TFRFyiqRDcJMsVOieYWQarcvfFUdZoAMzuYrZipR7sqTWEwgQyMIssJPnnu/YQ l4eu3lZofruKo0lHivbA7OX9bPtkZ+fRQTbCIgx36rRdoMp9vZ6A16n1C9kJ7fvlOwwf YGBGTXixWy2x1kyzjHnAXEmBF0pVsngUJh6FQEYXMU/3d1DGEk+ALO0zUXuc5StNs9aO 5mxwnieJ7E5UO2GmGdD6pMtMRSjLaGKIAstG7okDzRI0q+BrKhVWSLxueFF0qi6UJ8Vg CTKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=CZY09TnMUFVEFWuNR4C7qPCTGcTFTXRQ96hBw8GU84o=; b=Vy9dHUL6aj5F2edY5Z5FsgY3yoCGimI+3DBiwnTvnldeRMe7SVltTKmMHUX2tL166p FL8iiXv9gK1w2GAO6GZa1NOU+tUcvGVJerts8sq2HVC1PK04yjzWYB0cbh1B5DhqKRcn 4+cOOnILVIZtVxzpIIMXQaBc8iS5lXm/xB1kz/e5LwFO3SxfDRWD1ZYwnTWVX7kAMNpT PmYfaJFWoHEgXUd6xp4o2kcCPYBYnRjc7ZegCXfzod7raW4ch4iaN1FzjFM75/G0F9ml cTlHRGLr8/Zk3M43BWMkYjHp2viM7q4zGLfuntGtmKDIsIHoJKS1HP0I9RUzADAdVL22 S5eA== X-Gm-Message-State: AMCzsaUl4sV31N6yUHStWNuIV3Vmnl5DquuWruoUanoY0sdpl3COWD59 qOb5VEIrVcV44ilDI0OvRRg= X-Google-Smtp-Source: ABhQp+Qn+yp7yU/RM8ue8i5rM3Ejwddy3zc0EOwukISpoCR8r1aegi/N2uqB3H4et/aiKG5XMqh5dA== X-Received: by 10.46.78.2 with SMTP id c2mr113622ljb.11.1508252037269; Tue, 17 Oct 2017 07:53:57 -0700 (PDT) Received: from neopili.qtec.com (cpe.xe-3-0-1-778.vbrnqe10.dk.customer.tdc.net. [80.197.57.18]) by smtp.gmail.com with ESMTPSA id n63sm2534123ljb.1.2017.10.17.07.53.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 17 Oct 2017 07:53:55 -0700 (PDT) From: Ricardo Ribalda Delgado To: Hans Verkuil , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Ricardo Ribalda Delgado Subject: [PATCH] media: v4l2-ctrl: Fix flags field on Control events Date: Tue, 17 Oct 2017 16:53:53 +0200 Message-Id: <20171017145353.8521-1-ricardo.ribalda@gmail.com> X-Mailer: git-send-email 2.14.2 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP VIDIOC_DQEVENT and VIDIOC_QUERY_EXT_CTRL should give the same output for the control flags field. This patch creates a new function user_flags(), that calculates the user exported flags value (which is different than the kernel internal flags structure). This function is then used by all the code that exports the internal flags to userspace. Reported-by: Dimitrios Katsaros Signed-off-by: Ricardo Ribalda Delgado --- Maybe we should cc stable on this one. drivers/media/v4l2-core/v4l2-ctrls.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/media/v4l2-core/v4l2-ctrls.c b/drivers/media/v4l2-core/v4l2-ctrls.c index 4e53a8654690..751cf5746f90 100644 --- a/drivers/media/v4l2-core/v4l2-ctrls.c +++ b/drivers/media/v4l2-core/v4l2-ctrls.c @@ -1227,6 +1227,16 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum v4l2_ctrl_type *type, } EXPORT_SYMBOL(v4l2_ctrl_fill); +static u32 user_flags(struct v4l2_ctrl *ctrl) +{ + u32 flags = ctrl->flags; + + if (ctrl->is_ptr) + flags |= V4L2_CTRL_FLAG_HAS_PAYLOAD; + + return flags; +} + static void fill_event(struct v4l2_event *ev, struct v4l2_ctrl *ctrl, u32 changes) { memset(ev->reserved, 0, sizeof(ev->reserved)); @@ -1234,7 +1244,7 @@ static void fill_event(struct v4l2_event *ev, struct v4l2_ctrl *ctrl, u32 change ev->id = ctrl->id; ev->u.ctrl.changes = changes; ev->u.ctrl.type = ctrl->type; - ev->u.ctrl.flags = ctrl->flags; + ev->u.ctrl.flags = user_flags(ctrl); if (ctrl->is_ptr) ev->u.ctrl.value64 = 0; else @@ -2577,10 +2587,8 @@ int v4l2_query_ext_ctrl(struct v4l2_ctrl_handler *hdl, struct v4l2_query_ext_ctr else qc->id = ctrl->id; strlcpy(qc->name, ctrl->name, sizeof(qc->name)); - qc->flags = ctrl->flags; + qc->flags = user_flags(ctrl); qc->type = ctrl->type; - if (ctrl->is_ptr) - qc->flags |= V4L2_CTRL_FLAG_HAS_PAYLOAD; qc->elem_size = ctrl->elem_size; qc->elems = ctrl->elems; qc->nr_of_dims = ctrl->nr_of_dims;