From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.7 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5B8A6C432C0 for ; Thu, 28 Nov 2019 06:40:30 +0000 (UTC) Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) (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 6B27B215F2 for ; Thu, 28 Nov 2019 06:40:29 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=alsa-project.org header.i=@alsa-project.org header.b="HYnCgEot" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6B27B215F2 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.de Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=alsa-devel-bounces@alsa-project.org Received: from alsa1.perex.cz (alsa1.perex.cz [207.180.221.201]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa0.perex.cz (Postfix) with ESMTPS id 5DBBF16CD; Thu, 28 Nov 2019 07:39:37 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa0.perex.cz 5DBBF16CD DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=alsa-project.org; s=default; t=1574923227; bh=Heizq9K6CXNIPMzDCvkKRf+Ty8eWF1XzFWy9QQX8xUE=; h=Date:From:To:In-Reply-To:References:Cc:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=HYnCgEot0zkEDK7CHRcR0YXaGFLSCEawujWgHvuLiVjNNDBmcxKbrpifFsWVsN3PS rgb31nbTwctK4xT8em+BUD2ptPB4LH8e3AgQMpAQcD46fYs2K7+aPq7TJ9TI0crKhB u1wJx1NQKTudY3jOuVmjwPVMmUFDZQ7ukgb0rfeY= Received: from alsa1.perex.cz (localhost.localdomain [127.0.0.1]) by alsa1.perex.cz (Postfix) with ESMTP id CB854F8013A; Thu, 28 Nov 2019 07:39:36 +0100 (CET) Received: by alsa1.perex.cz (Postfix, from userid 50401) id 97392F80149; Thu, 28 Nov 2019 07:39:35 +0100 (CET) Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by alsa1.perex.cz (Postfix) with ESMTPS id 9C15EF800CB for ; Thu, 28 Nov 2019 07:39:32 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 alsa1.perex.cz 9C15EF800CB X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id DF213B25C; Thu, 28 Nov 2019 06:39:30 +0000 (UTC) Date: Thu, 28 Nov 2019 07:39:30 +0100 Message-ID: From: Takashi Iwai To: Curtis Malainey In-Reply-To: <20191128011358.39234-1-cujomalainey@chromium.org> References: <20191128011358.39234-1-cujomalainey@chromium.org> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 Emacs/25.3 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Cc: alsa-devel@alsa-project.org, Mark Brown , Takashi Iwai , Liam Girdwood Subject: Re: [alsa-devel] [PATCH] ASoC: core: only flush inited work during free X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: alsa-devel-bounces@alsa-project.org Sender: "Alsa-devel" On Thu, 28 Nov 2019 02:13:58 +0100, Curtis Malainey wrote: > > There are many paths to soc_free_pcm_runtime which can both have and > have not yet inited the workqueue yet. When we flush the queue when we > have not yet inited the queue we cause warnings to be printed. > > An example is soc_cleanup_card_resources which is called by > snd_soc_bind_card which has multiple failure points before and after > soc_link_init -> soc_new_pcm which is where the queue is inited. > > Signed-off-by: Curtis Malainey This patch itself isn't wrong, but there is a generic problem in the current code in general. Many fields in snd_soc_pcm_runtime object, not only delayed_work, are initialized too late where soc_free_pcm_runtime() may be called beforehand. For example, rtd->component_list is initialized after the error path of rtd->codec_dais kmalloc, although soc_free_pcm_runtime() has a loop over the link. That said, at least the things like the linked list head and the work struct must be initialized right after the allocation before any use of the object. For this delayed_work, the situation is a bit complex, though. Usually the work is set up to point to a fixed function, but in the case of ASoC, it seems serving for different purposes depending on the component type. I guess the cleaner way would be a redirect call like: static void rtd_delayed_work(struct work_struct *work) { struct snd_soc_pcm_runtime *rtd = container_of(work, struct snd_soc_pcm_runtime, delayed_work.work); if (rtd->delayed_work_fn) rtd->delayed_work_fn(rtd); } static struct snd_soc_pcm_runtime *soc_new_pcm_runtime() { .... INIT_DELAYED_WORK(&rtd->delayed_work, rtd_delayed_work); .... } thanks, Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org https://mailman.alsa-project.org/mailman/listinfo/alsa-devel