Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp4373103pxu; Mon, 21 Dec 2020 10:45:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJzBzAwDrGxRNw10KRkaTxc7QHdPHM6XYRdiTjFEd1rGDyPb3sF/BLNxLkwjJsWIFwg0nHm9 X-Received: by 2002:a05:6402:104e:: with SMTP id e14mr17308535edu.316.1608576308264; Mon, 21 Dec 2020 10:45:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1608576308; cv=none; d=google.com; s=arc-20160816; b=AXnL7DmBHy8ZuZP+vG8cFYMQBix2VkdHDSSrOXTxnLR52RmtFz/YWp0fLpxZGhJ47Y Ls5msHwlkc+GtcBifa0qiO0CITDNu3bV72hOD8c4aed9sii2+m2CDZBHvoWI43Lt4rma 1Zn8EsQ0+MUxvUPjkZ4A/nA8Mxn6157qReFVBmTNCDMXKsc7Y8yqfM3zCGFo15RnI91+ lTC69BBT+zKwlU/aTUXAN87SGw2tVMVV6GTXB3AECflBmKhFrbYJ0O715F7FrStlqEmb RMQ21WDOpK7HO1C5lC0esBMGFDCKJ+cCvwx9AyUhT6Ci+CRNda2cjDzwMReiT/FzQDLX ABoA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=kP8yYt31i5ONWl1LfXGzW6cFigEjf/TbpTOooi2m/ec=; b=myCV7tuShFEyH6YPhyCwAIuhJ58em/f+oAi/jQnPP8tr3UiSGODIIMD6osdFqNrT+x S+6tXBHaEQGYnf1sQZyemY1x8d2WbbEn8rUDwEazyVNQWOyz34YqiYmy7WTfGvYD9Bqt NKZ0JEXbkYog7TkLEq8XECGHKqHWtPHx2AXD0O/mQyTB25vTBgeUkvGkF/ppOUsjDMNa BYv65vG0Lo2VRjh8pH9BMOkXoAUxyI1bPqqHLeHde3AaWs8WN+gLbGzAHHAL+Lx8fs58 dgoLwJ0FNBOPKU4B/aWjbQNkKW8QveA9ey1nFpt06cqN6K6SIxAM3NnGE9Dyw4xCtlyx G6qw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=kE8Vb5B4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s17si9259693eju.360.2020.12.21.10.44.45; Mon, 21 Dec 2020 10:45:08 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=kE8Vb5B4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726579AbgLUSnN (ORCPT + 99 others); Mon, 21 Dec 2020 13:43:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54954 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726335AbgLUSnM (ORCPT ); Mon, 21 Dec 2020 13:43:12 -0500 Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6CAD8C0613D6 for ; Mon, 21 Dec 2020 10:42:32 -0800 (PST) Received: by mail-wm1-x332.google.com with SMTP id v14so10809296wml.1 for ; Mon, 21 Dec 2020 10:42:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=kP8yYt31i5ONWl1LfXGzW6cFigEjf/TbpTOooi2m/ec=; b=kE8Vb5B4Zev9IefCltuuQwNxOVTpBzcStyZwon/c/qNBWWargTnjd8ekd9XjkCUlcu /NaM5J8fkc06TjZDglePQ5DgUKbFw2YWUsidoliiRexnyED37+0Dg7w7hO7uyrikyE+y gIoRIk0EwqZyWaxEc5dpfUjOgHbqQtJVq66uI= 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=kP8yYt31i5ONWl1LfXGzW6cFigEjf/TbpTOooi2m/ec=; b=I+vab966GijM87kYRTvaAiDjzYbzDVOZBdc+JWaATAiUVUTbwiO/blo11vx/F25LyV F6eczmBJCjrTaUKie/dBjrzGxKbUoeJl5H94hsarLmjjNm0VSSVom/ZxWhyAkWOgClwK UDt443FtvvfLsjwHPJee0JC5j//7NeuW7npwrXNQQ0LapBYSUONaRgOJWfNPjvHRh45g aUG1JRp7DlVmjAWyCN1pt9lD68/PbNPcMZZ1LdqKHZyy5D5W3XYH+vmatuV/VwdQxnAo 9CJh9PMiw9yr85Tgq5/Im6y2pv7yPMqegulDXjbKqB+E1Tt5FTus8mENRDg1OO3Rsj6h H0Fg== X-Gm-Message-State: AOAM532pEBBCEVGcYqI/si7jPRpenGwwcdIqXpQref8U/soUMkog+JJJ x6AwWJhovNzIVN9wMbHz4jliC0qmkDWkkgghw/w= X-Received: by 2002:a1c:4604:: with SMTP id t4mr16820996wma.17.1608569302884; Mon, 21 Dec 2020 08:48:22 -0800 (PST) Received: from alco.lan ([80.71.134.83]) by smtp.gmail.com with ESMTPSA id o125sm24581109wmo.30.2020.12.21.08.48.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Dec 2020 08:48:22 -0800 (PST) From: Ricardo Ribalda To: Laurent Pinchart , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Ricardo Ribalda Subject: [PATCH v5 01/12] media: uvcvideo: Fix race condition handling events Date: Mon, 21 Dec 2020 17:48:08 +0100 Message-Id: <20201221164819.792019-2-ribalda@chromium.org> X-Mailer: git-send-email 2.29.2.684.gfbc64c5ab5-goog In-Reply-To: <20201221164819.792019-1-ribalda@chromium.org> References: <20201221164819.792019-1-ribalda@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The control and its data needs to be copied to the workqueue at the same time to avoid half-updates of the events. This is, events reported to userspace were the control id does not match its value. Signed-off-by: Ricardo Ribalda --- drivers/media/usb/uvc/uvc_ctrl.c | 2 +- drivers/media/usb/uvc/uvcvideo.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c index 011e69427b7c..aa18dcdf8165 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -1332,7 +1332,7 @@ bool uvc_ctrl_status_event(struct urb *urb, struct uvc_video_chain *chain, return false; } - w->data = data; + memcpy(w->data, data, ctrl->info.size); w->urb = urb; w->chain = chain; w->ctrl = ctrl; diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h index a3dfacf069c4..0db6c2e0bd98 100644 --- a/drivers/media/usb/uvc/uvcvideo.h +++ b/drivers/media/usb/uvc/uvcvideo.h @@ -678,7 +678,7 @@ struct uvc_device { struct urb *urb; struct uvc_video_chain *chain; struct uvc_control *ctrl; - const void *data; + u8 data[UVC_MAX_STATUS_SIZE]; } async_ctrl; }; -- 2.29.2.684.gfbc64c5ab5-goog