From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Date: Mon, 14 Jul 2014 08:59:09 +0000 Subject: Re: [PATCH 1/1] ice1712: check if snd card loaded, if not do not proceed Message-Id: List-Id: References: <1405052377-3096-1-git-send-email-kostaslinuxxx@gmail.com> In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Konstantinos Tsimpoukas Cc: alsa-devel@alsa-project.org, Jaroslav Kysela , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org At Fri, 11 Jul 2014 12:50:10 -0500, Konstantinos Tsimpoukas wrote: > > Then i suppose the same applies for hda snd remove (in hda_intel.c), > as same struct is used there as well. No, hda_intel.c is an exception. Its probe continues to a workqueue, and the probe failure might happen asynchronously, thus pci drvdata can be actually NULL at remove callback. Takashi > > Regards, > Kostas > > > 2014-07-11 5:06 GMT-05:00 Takashi Iwai : > > > At Thu, 10 Jul 2014 23:19:37 -0500, > > Konstantinos Tsimpoukas wrote: > > > > > > Just adding a simple if statement, which > > > verifies if actually card is loaded, if not > > > does not continue with the execution > > > of the snd_card_free. > > > > It's already referenced by ice, so a NULL check must be peformed at > > first. But, basically card is always non-NULL. The remove callback > > is called only for objects that was properly bound with probe > > callback. snd_ice1712_probe() always sets the card pointer when it > > succeeds. > > > > > > thanks, > > > > Takashi > > > > > > > Signed-off-by: Konstantinos Tsimpoukas > > > --- > > > sound/pci/ice1712/ice1712.c | 3 ++- > > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > > > diff --git a/sound/pci/ice1712/ice1712.c b/sound/pci/ice1712/ice1712.c > > > index d9b9e45..431096b 100644 > > > --- a/sound/pci/ice1712/ice1712.c > > > +++ b/sound/pci/ice1712/ice1712.c > > > @@ -2819,7 +2819,8 @@ static void snd_ice1712_remove(struct pci_dev *pci) > > > > > > if (ice->card_info && ice->card_info->chip_exit) > > > ice->card_info->chip_exit(ice); > > > - snd_card_free(card); > > > + if (card) > > > + snd_card_free(card); > > > } > > > > > > #ifdef CONFIG_PM_SLEEP > > > -- > > > 1.9.1 > > > > > > [2 ] >