Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp1254249imw; Tue, 5 Jul 2022 06:30:03 -0700 (PDT) X-Google-Smtp-Source: AGRyM1sUZIvihpknUTGMGMrWt28K+HUwyrDTHr82g/vsU4/WJptyZi3XlDnOUmQwz5EeY+4dTaOJ X-Received: by 2002:a17:90b:1c86:b0:1ee:e795:a6a with SMTP id oo6-20020a17090b1c8600b001eee7950a6amr42703749pjb.205.1657027803707; Tue, 05 Jul 2022 06:30:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657027803; cv=none; d=google.com; s=arc-20160816; b=HfJrkE1iHArAOaF4/hCjc7SI0iAm8S1KKflWBDBMGGf0sBsuKPV0Pj83H6szErT0XJ LvQIPTzUNftPuP5yFU7DvNCbLTiHO+TeKbIWkAkuAsXMyRzS+ta+Rw77VDQAqBFod084 pcKY8ZHwSyPEGKeFCniJiQ9uj5VbsFIJQf7QBcvZJhpPqEfBemhS4Eqer2dzYx/ODmAA zz7aSLLbeqPDBH+j9xk49msNRyLqRIg4dv87OXS1WLShP6VCOF2DH1jJKWAgvyDwBCtV /pSUD+Mdmqtc7DEFfym99rnFaCAqChvuCFvdi7CPjTZ1kS74zHbGO42/FSgZD8kmBqLb +zjQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent:references:in-reply-to :subject:cc:to:from:message-id:date:dkim-signature:dkim-signature; bh=cLuoK5JGT2eXHO0cJ7kh2a9mXgAReW4i3StHieVHhGs=; b=0f+86DXyf8eUHv/mRAW/fn+rZHURvyzKtioq2fu8HbZM6YznrINzBdZeShF73tBLKu 57tgKYMabnW79o+v+OHVEg6fgEX1w9jF0D4AXF17LYLGU1HWQnomzgdNt8UfkShZ75XH PO8zWLZ+uBCy4wX5XsR/jydgKpKjPsdYRHHz7d9w+EhXK3PKITeA73CgPqDF6r9I2Ev3 zWZDfw3Uc2ocSGFNKxC7fiW+hebEc4WnbrgJzf+LBa3ktmjYX5s0rh6vvEy6KN4nYvLl Kri/mSYIt6zuEWfBkllUE7fACZOrbMGJAso88rM5XhZiVITZArEKedz/WFfnZ0TVoBRU T4Ew== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=ue0BvSHj; dkim=neutral (no key) header.i=@suse.de header.b=TCo5RIKr; 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=suse.de Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g127-20020a636b85000000b0040dffa70d5bsi35808347pgc.37.2022.07.05.06.29.52; Tue, 05 Jul 2022 06:30:03 -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=@suse.de header.s=susede2_rsa header.b=ue0BvSHj; dkim=neutral (no key) header.i=@suse.de header.b=TCo5RIKr; 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=suse.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229843AbiGEL4o (ORCPT + 99 others); Tue, 5 Jul 2022 07:56:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38736 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229796AbiGEL4m (ORCPT ); Tue, 5 Jul 2022 07:56:42 -0400 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1F78F17A88 for ; Tue, 5 Jul 2022 04:56:42 -0700 (PDT) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id CC73E21892; Tue, 5 Jul 2022 11:56:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1657022200; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=cLuoK5JGT2eXHO0cJ7kh2a9mXgAReW4i3StHieVHhGs=; b=ue0BvSHjzwoHqrvid+ks0qbJQmdvExbaHJqu5NM9N9h+P15qaX3l28bWldbc28EZe4WtPR clB1EwQWU6YWwgK/IDu9GECjuXpQaJGxQPjUncZWooS8iI4ziqaUwcFXe/tCLwyQQ0C0hJ FAJVshNCdcjHUi4JKF+KxZW1b43srLk= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1657022200; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=cLuoK5JGT2eXHO0cJ7kh2a9mXgAReW4i3StHieVHhGs=; b=TCo5RIKr8fpRMBzdOB8xCQn+NPDIPX7KvJWKhSu+irwiBl0AlaWZg48a8oSY9WnDvBjpNq 5lfhiI678nFw6DCQ== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id ADEC51339A; Tue, 5 Jul 2022 11:56:40 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id vcmrKfgmxGKrOAAAMHmgww (envelope-from ); Tue, 05 Jul 2022 11:56:40 +0000 Date: Tue, 05 Jul 2022 13:56:40 +0200 Message-ID: <875ykbvklj.wl-tiwai@suse.de> From: Takashi Iwai To: Jan Engelhardt Cc: alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org Subject: Re: snd_cs46xx regression, producing Oops In-Reply-To: References: User-Agent: Wanderlust/2.15.9 (Almost Unreal) Emacs/27.2 Mule/6.0 MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,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 On Tue, 05 Jul 2022 12:56:14 +0200, Jan Engelhardt wrote: > > > Commit v5.14-rc1-39-g5bff69b3645d introduced a breakage into > snd_cs46xx. When loading the module, an Oops is thrown. The system > works fine afterwards, but the final reboot/poweroff message to ACPI > has no effect after such Oops occurred. (Blacklisting snd_cs46xx > works around the reboot problem.) > > bisected to: > commit 5bff69b3645db7b3018ecbc26218d8866aeaf214 > Author: Takashi Iwai > Date: Thu Jul 15 09:58:52 2021 +0200 > > ALSA: cs46xx: Allocate resources with device-managed APIs > > This patch converts the resource management in PCI cs46xx driver with > devres as a clean up. Each manual resource management is converted > with the corresponding devres helper, and the card object release is > managed now via card->private_free instead of a lowlevel snd_device. Could you try the patch below? thanks, Takashi -- 8< -- From: Takashi Iwai Subject: [PATCH] ALSA: cs46xx: Fix missing snd_card_free() call at probe error 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() manually on the error from the probe callback. Fixes: 5bff69b3645d ("ALSA: cs46xx: Allocate resources with device-managed APIs") Cc: Reported-by: Jan Engelhardt Signed-off-by: Takashi Iwai --- sound/pci/cs46xx/cs46xx.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/sound/pci/cs46xx/cs46xx.c b/sound/pci/cs46xx/cs46xx.c index bd60308769ff..8634004a606b 100644 --- a/sound/pci/cs46xx/cs46xx.c +++ b/sound/pci/cs46xx/cs46xx.c @@ -74,36 +74,36 @@ static int snd_card_cs46xx_probe(struct pci_dev *pci, err = snd_cs46xx_create(card, pci, external_amp[dev], thinkpad[dev]); if (err < 0) - return err; + goto error; card->private_data = chip; chip->accept_valid = mmap_valid[dev]; err = snd_cs46xx_pcm(chip, 0); if (err < 0) - return err; + goto error; #ifdef CONFIG_SND_CS46XX_NEW_DSP err = snd_cs46xx_pcm_rear(chip, 1); if (err < 0) - return err; + goto error; err = snd_cs46xx_pcm_iec958(chip, 2); if (err < 0) - return err; + goto error; #endif err = snd_cs46xx_mixer(chip, 2); if (err < 0) - return err; + goto error; #ifdef CONFIG_SND_CS46XX_NEW_DSP if (chip->nr_ac97_codecs ==2) { err = snd_cs46xx_pcm_center_lfe(chip, 3); if (err < 0) - return err; + goto error; } #endif err = snd_cs46xx_midi(chip, 0); if (err < 0) - return err; + goto error; err = snd_cs46xx_start_dsp(chip); if (err < 0) - return err; + goto error; snd_cs46xx_gameport(chip); @@ -117,11 +117,15 @@ static int snd_card_cs46xx_probe(struct pci_dev *pci, err = snd_card_register(card); if (err < 0) - return err; + goto error; pci_set_drvdata(pci, card); dev++; return 0; + + error: + snd_card_free(card); + return err; } static struct pci_driver cs46xx_driver = { -- 2.35.3