Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp1046162pxk; Thu, 10 Sep 2020 05:51:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzO0p96mVoDuWtUhnPPCzmJ0c0wCRTDZLZ9wt+/fuvteYqZpsRj+mYw0Jpn+FWpxkRJn1Jl X-Received: by 2002:a17:906:2962:: with SMTP id x2mr8411944ejd.188.1599742291611; Thu, 10 Sep 2020 05:51:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1599742291; cv=none; d=google.com; s=arc-20160816; b=qcK8K5MwqEiFgZa8fKymwOmBqpN1mMuz34LcpYiPZoQJM+/Nn8sH08BqhjZ5aP+g/e tPuq/a3zNkkvAivcYqU0GzAN4gRNRBSzBnZqey7rq7D8T6yBmaTiCV3zJrhT5gEVzoTS ZfVL2StxcN1RW3kMAfv5k6uBKlQCBuvU3xNOQyY42MEoazDCYHTXI2iCxJdGMqDqs2zc 1BexxCwBxde682j0v5t5Hk1PmWgSP6RdZGtLIMNivIYgmCt2O2qv3pybGKwBKpRYZdkV H63QLiNmfLEV5Ii1dv2nSEEQLHrNsYLo/opCpGi04cq90Breb/03EM6JrJEUA1PFEJJa /RLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=oSO2X+Y5NmBuvGS9uUZWnEPeQE+motL6Fdf+pcGvDb4=; b=J17zVcyHG8Vb3WbZnuPfWkG1jZrxIEOZDvVvuS6W3r/v6FIVlR19pARE2gT4RBCIlR PuZS9vWu90M8n7rcBW5UJ4Fmrz3Lbd9Vyl/T6Sz4NshwHzXZ0k1T1mMI2b32P6p8E2m3 WZKeu6KfBPISIxTXnvzCrsoiNua1CG1aVS6vi3Z2RQO4xXumXgMDsZayYal2ZBBLBU1E 1e7nAz7PTtX1X3DlGfwQodPrM+ooc6D5Cz+vykc98r8STh5bj5n6OxTL2PxIpfZUm2Qw JUn/BY5xoKtvpefr4fnJFVG3wLx2xZ5s87es7BYtxNsMfBrFhVnliA7svkR0jpRwdDxG WURA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id jr1si3591816ejb.164.2020.09.10.05.51.09; Thu, 10 Sep 2020 05:51:31 -0700 (PDT) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730874AbgIJMr3 (ORCPT + 99 others); Thu, 10 Sep 2020 08:47:29 -0400 Received: from alexa-out.qualcomm.com ([129.46.98.28]:11026 "EHLO alexa-out.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730696AbgIJMpg (ORCPT ); Thu, 10 Sep 2020 08:45:36 -0400 Received: from ironmsg07-lv.qualcomm.com (HELO ironmsg07-lv.qulacomm.com) ([10.47.202.151]) by alexa-out.qualcomm.com with ESMTP; 10 Sep 2020 05:44:39 -0700 Received: from ironmsg02-blr.qualcomm.com ([10.86.208.131]) by ironmsg07-lv.qulacomm.com with ESMTP/TLS/AES256-SHA; 10 Sep 2020 05:44:37 -0700 Received: from c-mansur-linux.qualcomm.com ([10.204.90.208]) by ironmsg02-blr.qualcomm.com with ESMTP; 10 Sep 2020 18:14:25 +0530 Received: by c-mansur-linux.qualcomm.com (Postfix, from userid 461723) id DD94921D23; Thu, 10 Sep 2020 18:14:23 +0530 (IST) From: Mansur Alisha Shaik To: linux-media@vger.kernel.org, stanimir.varbanov@linaro.org Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, vgarodia@codeaurora.org, Mansur Alisha Shaik Subject: [PATCH v2 2/3] venus: core: cancel pending work items in workqueue Date: Thu, 10 Sep 2020 18:14:15 +0530 Message-Id: <1599741856-16239-3-git-send-email-mansur@codeaurora.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1599741856-16239-1-git-send-email-mansur@codeaurora.org> References: <1599741856-16239-1-git-send-email-mansur@codeaurora.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In concurrency usecase and reboot scenario we are observing race condition and seeing NULL pointer dereference crash. In shutdown path and system recovery path we are destroying the same mutex hence seeing crash. This case is handled by mutex protection and cancel delayed work items in work queue. Below is the call trace for the crash Call trace: venus_remove+0xdc/0xec [venus_core] venus_core_shutdown+0x1c/0x34 [venus_core] platform_drv_shutdown+0x28/0x34 device_shutdown+0x154/0x1fc kernel_restart_prepare+0x40/0x4c kernel_restart+0x1c/0x64 Call trace: mutex_lock+0x34/0x60 venus_hfi_destroy+0x28/0x98 [venus_core] hfi_destroy+0x1c/0x28 [venus_core] venus_sys_error_handler+0x60/0x14c [venus_core] process_one_work+0x210/0x3d0 worker_thread+0x248/0x3f4 kthread+0x11c/0x12c ret_from_fork+0x10/0x18 Signed-off-by: Mansur Alisha Shaik --- drivers/media/platform/qcom/venus/core.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c index c5af428..69aa199 100644 --- a/drivers/media/platform/qcom/venus/core.c +++ b/drivers/media/platform/qcom/venus/core.c @@ -323,6 +323,8 @@ static int venus_remove(struct platform_device *pdev) struct device *dev = core->dev; int ret; + cancel_delayed_work_sync(&core->work); + ret = pm_runtime_get_sync(dev); WARN_ON(ret < 0); @@ -340,7 +342,9 @@ static int venus_remove(struct platform_device *pdev) if (pm_ops->core_put) pm_ops->core_put(dev); + mutex_lock(&core->lock); hfi_destroy(core); + mutex_unlock(&core->lock); icc_put(core->video_path); icc_put(core->cpucfg_path); -- QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation