From patchwork Tue Jul 14 12:38:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dafna Hirschfeld X-Patchwork-Id: 11662759 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 98C1414DD for ; Tue, 14 Jul 2020 12:39:00 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 71E9A22453 for ; Tue, 14 Jul 2020 12:39:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="cORze/B2" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 71E9A22453 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=collabora.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-rockchip-bounces+patchwork-linux-rockchip=patchwork.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:MIME-Version:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Owner; bh=mdmit4uC6YO01juTbJbYmfT6qRFrWCzXU8YHolOoxI4=; b=cORze/B2GEnwaAZ0nB86koPhXG 3J36RTOznCS4EjuzIdlF3QhW9jx7p9wbTjz0D84jMq6dtPo2lNU4kVvuxjRHirkeAzLiKDNrhSpNB 5MrVYMK6WUDhvf/4khDurW9ZSAU5R7y0xXeoLoCJtKIqAZ7QDuCNA3GAb2ub3U5q6Vq7u+z7JQgOp u8WG4T9bWj40Va381YpHe/RjW/QazRJpPUXfjCQpeCyHdqkZGAIyldd1gdLkMJRU2Ki07VcAD44ir sLAWM0Haq1I5xkzkENmmAX/tjkF7tvz70uC5m3V+3LxqaBMa8jsWknTuLRmfEX6qxen4G0Lie2YOs AO86Ykzg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvKD3-0002Tt-Ru; Tue, 14 Jul 2020 12:38:57 +0000 Received: from bhuna.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e3e3]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvKCx-0002ON-PL for linux-rockchip@lists.infradead.org; Tue, 14 Jul 2020 12:38:53 +0000 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: dafna) with ESMTPSA id F2CEF2A0CCA From: Dafna Hirschfeld To: linux-media@vger.kernel.org, laurent.pinchart@ideasonboard.com Subject: [PATCH 0/4] media: staging: rkisp1: fix possible race conditions in capture Date: Tue, 14 Jul 2020 14:38:28 +0200 Message-Id: <20200714123832.28011-1-dafna.hirschfeld@collabora.com> X-Mailer: git-send-email 2.17.1 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200714_083852_020134_E8EFB5EE X-CRM114-Status: GOOD ( 10.02 ) X-Spam-Score: -0.0 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender matches SPF record 0.0 UNPARSEABLE_RELAY Informational: message has unparseable relay lines X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mchehab@kernel.org, dafna.hirschfeld@collabora.com, dafna3@gmail.com, tfiga@chromium.org, hverkuil@xs4all.nl, linux-rockchip@lists.infradead.org, helen.koike@collabora.com, sakari.ailus@linux.intel.com, kernel@collabora.com, ezequiel@collabora.com MIME-Version: 1.0 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+patchwork-linux-rockchip=patchwork.kernel.org@lists.infradead.org This patchset fixes several issues found in capture related to buffer managings. Patch 1 - The first patch removes an optimization that seems not useful. The optimization configures the next buffer in case the capture already streams and the first buffer is queued just before the first irq. This is an unlikely scenario. Also the code reads the field 'frame_sequence' which is updated on v-start interrupt by 'rkisp1-isp'. Laurent Pinchart mentioned in a comment that reading the frame_sequence outside of irq handlers should be avoided due to possible race conditions. https://patchwork.kernel.org/patch/11066513/#22823561 The entity 'rkisp1-params' also reads 'frame_sequence' outside of the irq handler a patch(set) will be sent to fix that too. Patch 2 - The second patch uses buf.lock to protect buf.curr and buf.next in places where they are not protected. Patch 3 - moves the code that manages the buffers to be together with the code that configure the next buffer address to the registers. This is a preparation for patch 4. patch 4 - The function 'rkisp1_stream_start' uses the function 'rkisp1_handle_buffer' in order to manage the buffers and configure the address registers before stream starts. But the function 'rkisp1_handle_buffer' also contains other code that is not needed for stream start The patch replace it with calls to rkisp1_set_next_buf. Dafna Hirschfeld (4): media: staging: rkisp1: cap: don't set next buffer from rkisp1_vb2_buf_queue media: staging: rkisp1: cap: protect buf.curr and buf.next with buf.lock media: staging: rkisp1: cap: move code that manages the buffers to rkisp1_set_next_buf media: staging: rkisp1: cap: in stream start, replace calls to rkisp1_handle_buffer with rkisp1_set_next_buf drivers/staging/media/rkisp1/rkisp1-capture.c | 52 +++++++------------ 1 file changed, 20 insertions(+), 32 deletions(-)