From patchwork Tue Nov 26 12:08:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dafna Hirschfeld X-Patchwork-Id: 11262031 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 D6EBF112B for ; Tue, 26 Nov 2019 12:08:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id C1B572075C for ; Tue, 26 Nov 2019 12:08:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728218AbfKZMId (ORCPT ); Tue, 26 Nov 2019 07:08:33 -0500 Received: from bhuna.collabora.co.uk ([46.235.227.227]:49498 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727547AbfKZMId (ORCPT ); Tue, 26 Nov 2019 07:08:33 -0500 Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: dafna) with ESMTPSA id 86002281E9A From: Dafna Hirschfeld To: linux-media@vger.kernel.org Cc: dafna.hirschfeld@collabora.com, hverkuil@xs4all.nl, dafna3@gmail.com, helen.koike@collabora.com, ezequiel@collabora.com, skhan@linuxfoundation.org, kernel@collabora.com Subject: [PATCH v3 0/3] media: vimc: release vimc in release cb of v4l2_device Date: Tue, 26 Nov 2019 13:08:19 +0100 Message-Id: <20191126120822.11451-1-dafna.hirschfeld@collabora.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org This patchset solves a crash that happens when unbinding the vimc device while it is streaming. Currently when the device is unbounded the vimc entities are released imidiettaly, this cause a crash if the streaming thread or the capture device dereference them after the release. The patchset solves this by deferring the release to the release callback of v4l2_device. This ensures that the vimc entities will be released after the last fh is closed and so the streaming terminates before. - The first patch replaces the usage of vimc_device.pdev.dev with vimc.mdev.dev - The second patch allocates the vimc_device dynamically. This is needed since the release of the device is deferred and might run after the device is initialized again. - The third patch moves the release of the vimc_device and all the vimc entities to the release callback of v4l2_device. Changes from v2: in patch 3, in case of failure in the probe function the memory is released directly from the probe function, and only on success path the release callback of v4l2_device is assigned Dafna Hirschfeld (3): media: vimc: replace vimc->pdev.dev with vimc->mdev.dev media: vimc: allocate vimc_device dynamically media: vimc: crash fix - release vimc in the v4l_device release drivers/media/platform/vimc/vimc-capture.c | 18 ++-- drivers/media/platform/vimc/vimc-common.c | 2 - drivers/media/platform/vimc/vimc-common.h | 30 +++--- drivers/media/platform/vimc/vimc-core.c | 101 ++++++++++++++------- drivers/media/platform/vimc/vimc-debayer.c | 19 ++-- drivers/media/platform/vimc/vimc-scaler.c | 19 ++-- drivers/media/platform/vimc/vimc-sensor.c | 18 ++-- 7 files changed, 115 insertions(+), 92 deletions(-)