Skip to content

Commit fbd741f

Browse files
plbossartbroonie
authored andcommitted
ASoC: cs35l56: fix usages of device_get_named_child_node()
The documentation for device_get_named_child_node() mentions this important point: " The caller is responsible for calling fwnode_handle_put() on the returned fwnode pointer. " Add fwnode_handle_put() to avoid leaked references. Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20240426152939.38471-1-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent e8a6a5a commit fbd741f

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

sound/soc/codecs/cs35l56.c

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1360,13 +1360,15 @@ static int cs35l56_try_get_broken_sdca_spkid_gpio(struct cs35l56_private *cs35l5
13601360
"spk-id-gpios", ACPI_TYPE_PACKAGE, &obj);
13611361
if (ret) {
13621362
dev_dbg(cs35l56->base.dev, "Could not get spk-id-gpios package: %d\n", ret);
1363+
fwnode_handle_put(af01_fwnode);
13631364
return -ENOENT;
13641365
}
13651366

13661367
/* The broken properties we can handle are a 4-element package (one GPIO) */
13671368
if (obj->package.count != 4) {
13681369
dev_warn(cs35l56->base.dev, "Unexpected spk-id element count %d\n",
13691370
obj->package.count);
1371+
fwnode_handle_put(af01_fwnode);
13701372
return -ENOENT;
13711373
}
13721374

@@ -1381,21 +1383,25 @@ static int cs35l56_try_get_broken_sdca_spkid_gpio(struct cs35l56_private *cs35l5
13811383
*/
13821384
ret = acpi_dev_add_driver_gpios(adev, cs35l56_af01_spkid_gpios_mapping);
13831385
if (ret) {
1386+
fwnode_handle_put(af01_fwnode);
13841387
return dev_err_probe(cs35l56->base.dev, ret,
13851388
"Failed to add gpio mapping to AF01\n");
13861389
}
13871390

13881391
ret = devm_add_action_or_reset(cs35l56->base.dev,
13891392
cs35l56_acpi_dev_release_driver_gpios,
13901393
adev);
1391-
if (ret)
1394+
if (ret) {
1395+
fwnode_handle_put(af01_fwnode);
13921396
return ret;
1397+
}
13931398

13941399
dev_dbg(cs35l56->base.dev, "Added spk-id-gpios mapping to AF01\n");
13951400
}
13961401

13971402
desc = fwnode_gpiod_get_index(af01_fwnode, "spk-id", 0, GPIOD_IN, NULL);
13981403
if (IS_ERR(desc)) {
1404+
fwnode_handle_put(af01_fwnode);
13991405
ret = PTR_ERR(desc);
14001406
return dev_err_probe(cs35l56->base.dev, ret, "Get GPIO from AF01 failed\n");
14011407
}
@@ -1404,9 +1410,12 @@ static int cs35l56_try_get_broken_sdca_spkid_gpio(struct cs35l56_private *cs35l5
14041410
gpiod_put(desc);
14051411

14061412
if (ret < 0) {
1413+
fwnode_handle_put(af01_fwnode);
14071414
dev_err_probe(cs35l56->base.dev, ret, "Error reading spk-id GPIO\n");
14081415
return ret;
1409-
}
1416+
}
1417+
1418+
fwnode_handle_put(af01_fwnode);
14101419

14111420
dev_info(cs35l56->base.dev, "Got spk-id from AF01\n");
14121421

0 commit comments

Comments
 (0)