stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Sylwester Nawrocki <s.nawrocki@samsung.com>,
	Charles Keepax <ckeepax@opensource.cirrus.com>,
	Krzysztof Kozlowski <krzk@kernel.org>,
	Mark Brown <broonie@kernel.org>, Sasha Levin <sashal@kernel.org>
Subject: [PATCH AUTOSEL 5.3 02/81] ASoC: samsung: arndale: Add missing OF node dereferencing
Date: Wed, 30 Oct 2019 11:48:08 -0400	[thread overview]
Message-ID: <20191030154928.9432-2-sashal@kernel.org> (raw)
In-Reply-To: <20191030154928.9432-1-sashal@kernel.org>

From: Sylwester Nawrocki <s.nawrocki@samsung.com>

[ Upstream commit fb629fa2587d0c150792d87e3053664bfc8dc78c ]

Ensure there is no OF node references kept when the driver
is removed/unbound.

Reviewed-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
Link: https://lore.kernel.org/r/20190920130218.32690-3-s.nawrocki@samsung.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 sound/soc/samsung/arndale_rt5631.c | 34 ++++++++++++++++++++++++++----
 1 file changed, 30 insertions(+), 4 deletions(-)

diff --git a/sound/soc/samsung/arndale_rt5631.c b/sound/soc/samsung/arndale_rt5631.c
index c213913eb9848..fd8c6642fb0df 100644
--- a/sound/soc/samsung/arndale_rt5631.c
+++ b/sound/soc/samsung/arndale_rt5631.c
@@ -5,6 +5,7 @@
 //  Author: Claude <claude@insginal.co.kr>
 
 #include <linux/module.h>
+#include <linux/of_device.h>
 #include <linux/platform_device.h>
 #include <linux/clk.h>
 
@@ -74,6 +75,17 @@ static struct snd_soc_card arndale_rt5631 = {
 	.num_links = ARRAY_SIZE(arndale_rt5631_dai),
 };
 
+static void arndale_put_of_nodes(struct snd_soc_card *card)
+{
+	struct snd_soc_dai_link *dai_link;
+	int i;
+
+	for_each_card_prelinks(card, i, dai_link) {
+		of_node_put(dai_link->cpus->of_node);
+		of_node_put(dai_link->codecs->of_node);
+	}
+}
+
 static int arndale_audio_probe(struct platform_device *pdev)
 {
 	int n, ret;
@@ -103,18 +115,31 @@ static int arndale_audio_probe(struct platform_device *pdev)
 		if (!arndale_rt5631_dai[0].codecs->of_node) {
 			dev_err(&pdev->dev,
 			"Property 'samsung,audio-codec' missing or invalid\n");
-			return -EINVAL;
+			ret = -EINVAL;
+			goto err_put_of_nodes;
 		}
 	}
 
 	ret = devm_snd_soc_register_card(card->dev, card);
+	if (ret) {
+		dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", ret);
+		goto err_put_of_nodes;
+	}
+	return 0;
 
-	if (ret)
-		dev_err(&pdev->dev, "snd_soc_register_card() failed:%d\n", ret);
-
+err_put_of_nodes:
+	arndale_put_of_nodes(card);
 	return ret;
 }
 
+static int arndale_audio_remove(struct platform_device *pdev)
+{
+	struct snd_soc_card *card = platform_get_drvdata(pdev);
+
+	arndale_put_of_nodes(card);
+	return 0;
+}
+
 static const struct of_device_id samsung_arndale_rt5631_of_match[] __maybe_unused = {
 	{ .compatible = "samsung,arndale-rt5631", },
 	{ .compatible = "samsung,arndale-alc5631", },
@@ -129,6 +154,7 @@ static struct platform_driver arndale_audio_driver = {
 		.of_match_table = of_match_ptr(samsung_arndale_rt5631_of_match),
 	},
 	.probe = arndale_audio_probe,
+	.remove = arndale_audio_remove,
 };
 
 module_platform_driver(arndale_audio_driver);
-- 
2.20.1


  reply	other threads:[~2019-10-30 15:50 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-30 15:48 [PATCH AUTOSEL 5.3 01/81] regulator: of: fix suspend-min/max-voltage parsing Sasha Levin
2019-10-30 15:48 ` Sasha Levin [this message]
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 03/81] ASoC: wm8994: Do not register inapplicable controls for WM1811 Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 04/81] regulator: da9062: fix suspend_enable/disable preparation Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 05/81] ASoC: topology: Fix a signedness bug in soc_tplg_dapm_widget_create() Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 06/81] arm64: dts: allwinner: a64: pine64-plus: Add PHY regulator delay Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 07/81] arm64: dts: allwinner: a64: Drop PMU node Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 08/81] arm64: dts: allwinner: a64: sopine-baseboard: Add PHY regulator delay Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 09/81] arm64: dts: Fix gpio to pinmux mapping Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 10/81] regulator: ti-abb: Fix timeout in ti_abb_wait_txdone/ti_abb_clear_all_txdone Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 11/81] pinctrl: intel: Allocate IRQ chip dynamic Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 12/81] ASoC: SOF: loader: fix kernel oops on firmware boot failure Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 13/81] ASoC: SOF: topology: fix parse fail issue for byte/bool tuple types Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 14/81] ASoC: SOF: Intel: hda: fix warnings during FW load Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 15/81] ASoC: SOF: Intel: initialise and verify FW crash dump data Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 16/81] ASoC: SOF: Intel: hda: Disable DMI L1 entry during capture Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 17/81] ASoC: rt5682: add NULL handler to set_jack function Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 18/81] ASoC: intel: sof_rt5682: add remove function to disable jack Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 19/81] ASoC: intel: bytcr_rt5651: add null check to support_button_press Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 20/81] regulator: pfuze100-regulator: Variable "val" in pfuze100_regulator_probe() could be uninitialized Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 21/81] ASoC: wm_adsp: Don't generate kcontrols without READ flags Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 22/81] ASoc: rockchip: i2s: Fix RPM imbalance Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 23/81] arm64: dts: rockchip: fix Rockpro64 RK808 interrupt line Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 24/81] ARM: dts: logicpd-torpedo-som: Remove twl_keypad Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 25/81] arm64: dts: rockchip: fix RockPro64 vdd-log regulator settings Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 26/81] arm64: dts: rockchip: fix RockPro64 sdhci settings Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 27/81] pinctrl: ns2: Fix off by one bugs in ns2_pinmux_enable() Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 28/81] pinctrl: stmfx: fix null pointer on remove Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 29/81] arm64: dts: zii-ultra: fix ARM regulator states Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 30/81] ARM: dts: am3874-iceboard: Fix 'i2c-mux-idle-disconnect' usage Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 31/81] ASoC: msm8916-wcd-digital: add missing MIX2 path for RX1/2 Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 32/81] ASoC: simple_card_utils.h: Fix potential multiple redefinition error Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 33/81] ARM: dts: Use level interrupt for omap4 & 5 wlcore Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 34/81] ARM: mm: fix alignment handler faults under memory pressure Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 35/81] scsi: qla2xxx: fix a potential NULL pointer dereference Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 36/81] scsi: scsi_dh_alua: handle RTPG sense code correctly during state transitions Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 37/81] scsi: sni_53c710: fix compilation error Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 38/81] scsi: fix kconfig dependency warning related to 53C700_LE_ON_BE Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 39/81] ARM: 8908/1: add __always_inline to functions called from __get_user_check() Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 40/81] ARM: 8914/1: NOMMU: Fix exc_ret for XIP Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 41/81] arm64: dts: rockchip: fix RockPro64 sdmmc settings Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 42/81] arm64: dts: rockchip: Fix usb-c on Hugsun X99 TV Box Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 43/81] arm64: dts: lx2160a: Correct CPU core idle state name Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 44/81] ARM: dts: imx6q-logicpd: Re-Enable SNVS power key Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 45/81] ARM: dts: vf610-zii-scu4-aib: Specify 'i2c-mux-idle-disconnect' Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 46/81] ARM: dts: imx7s: Correct GPT's ipg clock source Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 47/81] arm64: dts: imx8mq: Use correct clock for usdhc's ipg clk Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 48/81] arm64: dts: imx8mm: " Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 49/81] perf tools: Fix resource leak of closedir() on the error paths Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 50/81] perf c2c: Fix memory leak in build_cl_output() Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 51/81] USB: legousbtower: fix a signedness bug in tower_probe() Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 52/81] 8250-men-mcb: fix error checking when get_num_ports returns -ENODEV Sasha Levin
2019-10-30 15:48 ` [PATCH AUTOSEL 5.3 53/81] perf kmem: Fix memory leak in compact_gfp_flags() Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 54/81] ARM: davinci: dm365: Fix McBSP dma_slave_map entry Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 55/81] drm/amdgpu: fix potential VM faults Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 56/81] drm/amdgpu: fix error handling in amdgpu_bo_list_create Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 57/81] scsi: target: core: Do not overwrite CDB byte 1 Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 58/81] scsi: hpsa: add missing hunks in reset-patch Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 59/81] ASoC: Intel: sof-rt5682: add a check for devm_clk_get Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 60/81] ASoC: SOF: control: return true when kcontrol values change Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 61/81] tracing: Fix "gfp_t" format for synthetic events Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 62/81] ARM: dts: bcm2837-rpi-cm3: Avoid leds-gpio probing issue Sasha Levin
2019-10-30 15:49 ` [PATCH AUTOSEL 5.3 63/81] i2c: aspeed: fix master pending state handling Sasha Levin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191030154928.9432-2-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=broonie@kernel.org \
    --cc=ckeepax@opensource.cirrus.com \
    --cc=krzk@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=s.nawrocki@samsung.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).