Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp509309pxb; Fri, 22 Apr 2022 05:55:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwYL1XTKIn+e7CqTDpJbzZPD2SY7INlMSebVCubkhwmCZKJMwLvS5n5fN25anAI809XjGAp X-Received: by 2002:a05:6402:d05:b0:425:b7ab:776e with SMTP id eb5-20020a0564020d0500b00425b7ab776emr3904006edb.142.1650632122636; Fri, 22 Apr 2022 05:55:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650632122; cv=none; d=google.com; s=arc-20160816; b=gWx6YrA1rB2TcP+laKTRtayEw4MX9EmYcmj1yExFBTTymohubRepHa2ci52Rf01AwZ VBsZ01TR9rbK8mjTJ/uan8KzDYIzU3rure6V5bRkKV28QjmxCkRNaus4xeUVeDqrqFj6 qhhEqSASb17uGtK2RZm8jUTpzCYP3eIc+LTowDJVZVbrxZ6CEt9fIBWmVjr6nL1ixhB2 sZoccM4m/MUFyqUDySbMNI0GHknqH67N0hSM4Hzds2X88WvQTUlNGzqeAiX/HXRM00h8 eSm2E7spDgaQjyDP9DSetZY9vofQ187haHT/f5hrsRM37eGv/MFb94/0ZoxP4oUWFWtt zIOg== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=F+vQYkrP9kc1mYTkCOwPFt/5JwkagwsR9sq7RkgC84U=; b=eal49bgT5R1jNdzUjCwPe4fFl3ZiL8BUtSkdp+NoT3i6QQy/FiQyDthv8Wp4bMUQzT mKMJKfBVUBcNDkOACi6p24CZXck59CsPv1AVZ2UvuNH24W8+/dpyrJ0ons3uO8IHKLV1 iruafTZIDyCCm2m9AqlKR1QVFXU+QnJVG1wlFdkyxCXgGuXFAEPHVSssG+53hLaqcVkI W0ypsNKbC/H6CiIg7i1WXmiqrc7CWsAKHxCcEaYCzzvt3vq5nsva8Hu6Wkn9nW8og7Uc I1Y2zlKCmej2QI4k1WrwHERzmlPOs17REuzY34CGORrZVBJQ7dyhHYuniSaJfAhwQ/Yv sW1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=hHzgpIpm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m3-20020a509983000000b0041d864a4210si5698128edb.154.2022.04.22.05.54.58; Fri, 22 Apr 2022 05:55:22 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=hHzgpIpm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240133AbiDRMnq (ORCPT + 99 others); Mon, 18 Apr 2022 08:43:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54016 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240178AbiDRMdy (ORCPT ); Mon, 18 Apr 2022 08:33:54 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AB64F205DF; Mon, 18 Apr 2022 05:27:18 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 0C06AB80EDB; Mon, 18 Apr 2022 12:27:11 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 55E99C385A7; Mon, 18 Apr 2022 12:27:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1650284829; bh=ankRfE1NJGscVelAIBbvu7K3FN2QodaqU/jv0PZKqhw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hHzgpIpmKQOlVzw261UB/H3Yo31I8gOQ2B9mBQukMonv2D+rpwjhUqc1JHYKRuDGY YwI3qjZla5AQXzClKtRvoeur/82lHAus6yxaz4Ma1sur5xQtpt+dm5BTnqK73F5M/s 8PSPrOdvWcPrgTyW7FkbVkMDP9Ql8V46dJHaBt+0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Takashi Iwai Subject: [PATCH 5.15 022/189] ALSA: au88x0: Fix the missing snd_card_free() call at probe error Date: Mon, 18 Apr 2022 14:10:42 +0200 Message-Id: <20220418121201.145654760@linuxfoundation.org> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20220418121200.312988959@linuxfoundation.org> References: <20220418121200.312988959@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Takashi Iwai commit b093de145bc8769c6e9207947afad9efe102f4f6 upstream. The previous cleanup with devres may lead to the incorrect release orders at the probe error handling due to the devres's nature. Until we register the card, snd_card_free() has to be called at first for releasing the stuff properly when the driver tries to manage and release the stuff via card->private_free(). This patch fixes it by calling snd_card_free() on the error from the probe callback using a new helper function. Fixes: e44b5b440609 ("ALSA: au88x0: Allocate resources with device-managed APIs") Cc: Link: https://lore.kernel.org/r/20220412102636.16000-8-tiwai@suse.de Signed-off-by: Takashi Iwai Signed-off-by: Greg Kroah-Hartman --- sound/pci/au88x0/au88x0.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sound/pci/au88x0/au88x0.c b/sound/pci/au88x0/au88x0.c index 342ef2a6655e..eb234153691b 100644 --- a/sound/pci/au88x0/au88x0.c +++ b/sound/pci/au88x0/au88x0.c @@ -193,7 +193,7 @@ snd_vortex_create(struct snd_card *card, struct pci_dev *pci) // constructor -- see "Constructor" sub-section static int -snd_vortex_probe(struct pci_dev *pci, const struct pci_device_id *pci_id) +__snd_vortex_probe(struct pci_dev *pci, const struct pci_device_id *pci_id) { static int dev; struct snd_card *card; @@ -310,6 +310,12 @@ snd_vortex_probe(struct pci_dev *pci, const struct pci_device_id *pci_id) return 0; } +static int +snd_vortex_probe(struct pci_dev *pci, const struct pci_device_id *pci_id) +{ + return snd_card_free_on_error(&pci->dev, __snd_vortex_probe(pci, pci_id)); +} + // pci_driver definition static struct pci_driver vortex_driver = { .name = KBUILD_MODNAME, -- 2.35.2