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
next prev parent 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).