[alsa-devel] [Patch v2 1/2] ASoC: atmel: sam9x5_wm8731: fix oops when unload module
As the priv is not assigned to card->drvdata, it is NULL, so when unload module, it will cause NULL pointer oops. Assign priv to card->drvdata to fix this issue.
Signed-off-by: Bo Shen voice.shen@atmel.com --- Change in v2: - using snd_soc_card_set_drvdata() --- sound/soc/atmel/sam9x5_wm8731.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/sound/soc/atmel/sam9x5_wm8731.c b/sound/soc/atmel/sam9x5_wm8731.c index 992ae38..1b37228 100644 --- a/sound/soc/atmel/sam9x5_wm8731.c +++ b/sound/soc/atmel/sam9x5_wm8731.c @@ -97,6 +97,8 @@ static int sam9x5_wm8731_driver_probe(struct platform_device *pdev) goto out; }
+ snd_soc_card_set_drvdata(card, priv); + card->dev = &pdev->dev; card->owner = THIS_MODULE; card->dai_link = dai;
When call snd_soc_register_card, it will set driver data to this device through dev_set_drvdata, then in driver, no need to call platform_set_drvdata again, so remove it.
Signed-off-by: Bo Shen voice.shen@atmel.com --- Change in v2: - NONE --- sound/soc/atmel/sam9x5_wm8731.c | 2 -- 1 file changed, 2 deletions(-)
diff --git a/sound/soc/atmel/sam9x5_wm8731.c b/sound/soc/atmel/sam9x5_wm8731.c index 1b37228..ce9cd29 100644 --- a/sound/soc/atmel/sam9x5_wm8731.c +++ b/sound/soc/atmel/sam9x5_wm8731.c @@ -155,8 +155,6 @@ static int sam9x5_wm8731_driver_probe(struct platform_device *pdev) of_node_put(codec_np); of_node_put(cpu_np);
- platform_set_drvdata(pdev, card); - ret = snd_soc_register_card(card); if (ret) { dev_err(&pdev->dev,
On 27/11/2013 11:05, Bo Shen :
When call snd_soc_register_card, it will set driver data to this device through dev_set_drvdata, then in driver, no need to call platform_set_drvdata again, so remove it.
Signed-off-by: Bo Shen voice.shen@atmel.com
Change in v2:
- NONE
Hi Mark,
It seems that this patch has not been applied to your "next" branch (aka ping)...
BTW, it seems that we also collected this tag: Tested-by: Richard Genoud richard.genoud@gmail.com
Bye,
sound/soc/atmel/sam9x5_wm8731.c | 2 -- 1 file changed, 2 deletions(-)
diff --git a/sound/soc/atmel/sam9x5_wm8731.c b/sound/soc/atmel/sam9x5_wm8731.c index 1b37228..ce9cd29 100644 --- a/sound/soc/atmel/sam9x5_wm8731.c +++ b/sound/soc/atmel/sam9x5_wm8731.c @@ -155,8 +155,6 @@ static int sam9x5_wm8731_driver_probe(struct platform_device *pdev) of_node_put(codec_np); of_node_put(cpu_np);
- platform_set_drvdata(pdev, card);
- ret = snd_soc_register_card(card); if (ret) { dev_err(&pdev->dev,
On Mon, Dec 09, 2013 at 11:20:05AM +0100, Nicolas Ferre wrote:
It seems that this patch has not been applied to your "next" branch (aka ping)...
If you think something has been forgotten please resend. If it's genuinely been lost it's going to need resending and the mail just leads to more mails, a resend can be directly applied. I had thought I'd replied to this at the time but it seems I didn't, or at least I can't see my reply on the list... sorry about that.
The question was if we should change this or if we should change the core to not overwrite something that probably ought to be the driver's domain? Looking at the code I think we're probably doing the right thing but it'd be good to consider.
When call snd_soc_register_card, it will set driver data to this device through dev_set_drvdata, then in driver, no need to call platform_set_drvdata again, so remove it.
Signed-off-by: Bo Shen voice.shen@atmel.com Tested-by: Richard Genoud richard.genoud@gmail.com --- Hi Mark, This patch is not in your tree, so I resend it.
sound/soc/atmel/sam9x5_wm8731.c | 2 -- 1 file changed, 2 deletions(-)
diff --git a/sound/soc/atmel/sam9x5_wm8731.c b/sound/soc/atmel/sam9x5_wm8731.c index 7d6a905..3188036 100644 --- a/sound/soc/atmel/sam9x5_wm8731.c +++ b/sound/soc/atmel/sam9x5_wm8731.c @@ -155,8 +155,6 @@ static int sam9x5_wm8731_driver_probe(struct platform_device *pdev) of_node_put(codec_np); of_node_put(cpu_np);
- platform_set_drvdata(pdev, card); - ret = snd_soc_register_card(card); if (ret) { dev_err(&pdev->dev,
On Wed, Nov 27, 2013 at 06:05:10PM +0800, Bo Shen wrote:
When call snd_soc_register_card, it will set driver data to this device through dev_set_drvdata, then in driver, no need to call platform_set_drvdata again, so remove it.
Applied, thanks.
On Wed, Nov 27, 2013 at 06:05:09PM +0800, Bo Shen wrote:
As the priv is not assigned to card->drvdata, it is NULL, so when unload module, it will cause NULL pointer oops. Assign priv to card->drvdata to fix this issue.
Applied, thanks.
participants (3)
-
Bo Shen
-
Mark Brown
-
Nicolas Ferre