[alsa-devel] [asoc:for-5.1 255/257] sound/soc/samsung/odroid.c:298:22: warning: 'cpu_dai' may be used uninitialized in this function
tree: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.1 head: 70b773219a32c7b8f3e53e041bc023ad99fd81f4 commit: d832d2b246c516eacb2d0ba53ec17ed59c3cd62b [255/257] ASoC: samsung: odroid: Fix of_node refcount unbalance config: sh-allmodconfig (attached as .config) compiler: sh4-linux-gnu-gcc (Debian 8.2.0-11) 8.2.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross git checkout d832d2b246c516eacb2d0ba53ec17ed59c3cd62b # save the attached .config to linux build tree GCC_VERSION=8.2.0 make.cross ARCH=sh
Note: it may well be a FALSE warning. FWIW you are at least aware of it now. http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings
All warnings (new ones prefixed by >>):
sound/soc/samsung/odroid.c: In function 'odroid_audio_probe':
sound/soc/samsung/odroid.c:298:22: warning: 'cpu_dai' may be used uninitialized in this function [-Wmaybe-uninitialized]
priv->clk_i2s_bus = of_clk_get_by_name(cpu_dai, "iis"); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vim +/cpu_dai +298 sound/soc/samsung/odroid.c
aba611fc Sylwester Nawrocki 2017-04-21 193 aba611fc Sylwester Nawrocki 2017-04-21 194 static int odroid_audio_probe(struct platform_device *pdev) aba611fc Sylwester Nawrocki 2017-04-21 195 { aba611fc Sylwester Nawrocki 2017-04-21 196 struct device *dev = &pdev->dev; bc3cf17b Sylwester Nawrocki 2019-02-14 197 struct device_node *cpu, *cpu_dai, *codec; aba611fc Sylwester Nawrocki 2017-04-21 198 struct odroid_priv *priv; aba611fc Sylwester Nawrocki 2017-04-21 199 struct snd_soc_card *card; bc3cf17b Sylwester Nawrocki 2019-02-14 200 struct snd_soc_dai_link *link, *codec_link; bc3cf17b Sylwester Nawrocki 2019-02-14 201 int num_pcms, ret, i; bc3cf17b Sylwester Nawrocki 2019-02-14 202 struct of_phandle_args args = {}; aba611fc Sylwester Nawrocki 2017-04-21 203 aba611fc Sylwester Nawrocki 2017-04-21 204 priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); aba611fc Sylwester Nawrocki 2017-04-21 205 if (!priv) aba611fc Sylwester Nawrocki 2017-04-21 206 return -ENOMEM; aba611fc Sylwester Nawrocki 2017-04-21 207 aba611fc Sylwester Nawrocki 2017-04-21 208 card = &priv->card; aba611fc Sylwester Nawrocki 2017-04-21 209 card->dev = dev; aba611fc Sylwester Nawrocki 2017-04-21 210 aba611fc Sylwester Nawrocki 2017-04-21 211 card->owner = THIS_MODULE; aba611fc Sylwester Nawrocki 2017-04-21 212 card->fully_routed = true; aba611fc Sylwester Nawrocki 2017-04-21 213 b5c16a24 Sylwester Nawrocki 2019-02-14 214 spin_lock_init(&priv->lock); aba611fc Sylwester Nawrocki 2017-04-21 215 snd_soc_card_set_drvdata(card, priv); aba611fc Sylwester Nawrocki 2017-04-21 216 aba611fc Sylwester Nawrocki 2017-04-21 217 ret = snd_soc_of_parse_card_name(card, "model"); aba611fc Sylwester Nawrocki 2017-04-21 218 if (ret < 0) aba611fc Sylwester Nawrocki 2017-04-21 219 return ret; aba611fc Sylwester Nawrocki 2017-04-21 220 aba611fc Sylwester Nawrocki 2017-04-21 221 if (of_property_read_bool(dev->of_node, "samsung,audio-widgets")) { aba611fc Sylwester Nawrocki 2017-04-21 222 ret = snd_soc_of_parse_audio_simple_widgets(card, aba611fc Sylwester Nawrocki 2017-04-21 223 "samsung,audio-widgets"); aba611fc Sylwester Nawrocki 2017-04-21 224 if (ret < 0) aba611fc Sylwester Nawrocki 2017-04-21 225 return ret; aba611fc Sylwester Nawrocki 2017-04-21 226 } aba611fc Sylwester Nawrocki 2017-04-21 227 aba611fc Sylwester Nawrocki 2017-04-21 228 if (of_property_read_bool(dev->of_node, "samsung,audio-routing")) { aba611fc Sylwester Nawrocki 2017-04-21 229 ret = snd_soc_of_parse_audio_routing(card, aba611fc Sylwester Nawrocki 2017-04-21 230 "samsung,audio-routing"); aba611fc Sylwester Nawrocki 2017-04-21 231 if (ret < 0) aba611fc Sylwester Nawrocki 2017-04-21 232 return ret; aba611fc Sylwester Nawrocki 2017-04-21 233 } aba611fc Sylwester Nawrocki 2017-04-21 234 bc3cf17b Sylwester Nawrocki 2019-02-14 235 card->dai_link = odroid_card_dais; bc3cf17b Sylwester Nawrocki 2019-02-14 236 card->num_links = ARRAY_SIZE(odroid_card_dais); aba611fc Sylwester Nawrocki 2017-04-21 237 aba611fc Sylwester Nawrocki 2017-04-21 238 cpu = of_get_child_by_name(dev->of_node, "cpu"); aba611fc Sylwester Nawrocki 2017-04-21 239 codec = of_get_child_by_name(dev->of_node, "codec"); bc3cf17b Sylwester Nawrocki 2019-02-14 240 link = card->dai_link; bc3cf17b Sylwester Nawrocki 2019-02-14 241 codec_link = &card->dai_link[1]; bc3cf17b Sylwester Nawrocki 2019-02-14 242 bc3cf17b Sylwester Nawrocki 2019-02-14 243 /* bc3cf17b Sylwester Nawrocki 2019-02-14 244 * For backwards compatibility create the secondary CPU DAI link only bc3cf17b Sylwester Nawrocki 2019-02-14 245 * if there are 2 CPU DAI entries in the cpu sound-dai property in DT. f89aea0f Sylwester Nawrocki 2019-02-15 246 * Also add required DAPM routes not available in old DTS. bc3cf17b Sylwester Nawrocki 2019-02-14 247 */ bc3cf17b Sylwester Nawrocki 2019-02-14 248 num_pcms = of_count_phandle_with_args(cpu, "sound-dai", bc3cf17b Sylwester Nawrocki 2019-02-14 249 "#sound-dai-cells"); f89aea0f Sylwester Nawrocki 2019-02-15 250 if (num_pcms == 1) { f89aea0f Sylwester Nawrocki 2019-02-15 251 card->dapm_routes = odroid_dapm_routes; f89aea0f Sylwester Nawrocki 2019-02-15 252 card->num_dapm_routes = ARRAY_SIZE(odroid_dapm_routes); bc3cf17b Sylwester Nawrocki 2019-02-14 253 card->num_links--; f89aea0f Sylwester Nawrocki 2019-02-15 254 } bc3cf17b Sylwester Nawrocki 2019-02-14 255 bc3cf17b Sylwester Nawrocki 2019-02-14 256 for (i = 0; i < num_pcms; i++, link += 2) { bc3cf17b Sylwester Nawrocki 2019-02-14 257 ret = of_parse_phandle_with_args(cpu, "sound-dai", bc3cf17b Sylwester Nawrocki 2019-02-14 258 "#sound-dai-cells", i, &args); bc3cf17b Sylwester Nawrocki 2019-02-14 259 if (ret < 0) d832d2b2 Sylwester Nawrocki 2019-02-20 260 break; aba611fc Sylwester Nawrocki 2017-04-21 261 bc3cf17b Sylwester Nawrocki 2019-02-14 262 if (!args.np) { bc3cf17b Sylwester Nawrocki 2019-02-14 263 dev_err(dev, "sound-dai property parse error: %d\n", ret); d832d2b2 Sylwester Nawrocki 2019-02-20 264 ret = -EINVAL; d832d2b2 Sylwester Nawrocki 2019-02-20 265 break; aba611fc Sylwester Nawrocki 2017-04-21 266 } aba611fc Sylwester Nawrocki 2017-04-21 267 bc3cf17b Sylwester Nawrocki 2019-02-14 268 ret = snd_soc_get_dai_name(&args, &link->cpu_dai_name); bc3cf17b Sylwester Nawrocki 2019-02-14 269 of_node_put(args.np); bc3cf17b Sylwester Nawrocki 2019-02-14 270 aba611fc Sylwester Nawrocki 2017-04-21 271 if (ret < 0) d832d2b2 Sylwester Nawrocki 2019-02-20 272 break; bc3cf17b Sylwester Nawrocki 2019-02-14 273 } d832d2b2 Sylwester Nawrocki 2019-02-20 274 if (ret == 0) bc3cf17b Sylwester Nawrocki 2019-02-14 275 cpu_dai = of_parse_phandle(cpu, "sound-dai", 0); d832d2b2 Sylwester Nawrocki 2019-02-20 276 bc3cf17b Sylwester Nawrocki 2019-02-14 277 of_node_put(cpu); bc3cf17b Sylwester Nawrocki 2019-02-14 278 of_node_put(codec); d832d2b2 Sylwester Nawrocki 2019-02-20 279 if (ret < 0) d832d2b2 Sylwester Nawrocki 2019-02-20 280 return ret; aba611fc Sylwester Nawrocki 2017-04-21 281 bc3cf17b Sylwester Nawrocki 2019-02-14 282 ret = snd_soc_of_get_dai_link_codecs(dev, codec, codec_link); bc3cf17b Sylwester Nawrocki 2019-02-14 283 if (ret < 0) d832d2b2 Sylwester Nawrocki 2019-02-20 284 goto err_put_cpu_dai; aba611fc Sylwester Nawrocki 2017-04-21 285 bc3cf17b Sylwester Nawrocki 2019-02-14 286 /* Set capture capability only for boards with the MAX98090 CODEC */ bc3cf17b Sylwester Nawrocki 2019-02-14 287 if (codec_link->num_codecs > 1) { bc3cf17b Sylwester Nawrocki 2019-02-14 288 card->dai_link[0].dpcm_capture = 1; bc3cf17b Sylwester Nawrocki 2019-02-14 289 card->dai_link[1].dpcm_capture = 1; bc3cf17b Sylwester Nawrocki 2019-02-14 290 } a8ad0c85 Sylwester Nawrocki 2017-08-04 291 bc3cf17b Sylwester Nawrocki 2019-02-14 292 priv->sclk_i2s = of_clk_get_by_name(cpu_dai, "i2s_opclk1"); a8ad0c85 Sylwester Nawrocki 2017-08-04 293 if (IS_ERR(priv->sclk_i2s)) { a8ad0c85 Sylwester Nawrocki 2017-08-04 294 ret = PTR_ERR(priv->sclk_i2s); d832d2b2 Sylwester Nawrocki 2019-02-20 295 goto err_put_cpu_dai; a8ad0c85 Sylwester Nawrocki 2017-08-04 296 } a8ad0c85 Sylwester Nawrocki 2017-08-04 297 bc3cf17b Sylwester Nawrocki 2019-02-14 @298 priv->clk_i2s_bus = of_clk_get_by_name(cpu_dai, "iis"); a8ad0c85 Sylwester Nawrocki 2017-08-04 299 if (IS_ERR(priv->clk_i2s_bus)) { a8ad0c85 Sylwester Nawrocki 2017-08-04 300 ret = PTR_ERR(priv->clk_i2s_bus); a8ad0c85 Sylwester Nawrocki 2017-08-04 301 goto err_put_sclk; a8ad0c85 Sylwester Nawrocki 2017-08-04 302 } bc3cf17b Sylwester Nawrocki 2019-02-14 303 of_node_put(cpu_dai); a8ad0c85 Sylwester Nawrocki 2017-08-04 304 aba611fc Sylwester Nawrocki 2017-04-21 305 ret = devm_snd_soc_register_card(dev, card); aba611fc Sylwester Nawrocki 2017-04-21 306 if (ret < 0) { aba611fc Sylwester Nawrocki 2017-04-21 307 dev_err(dev, "snd_soc_register_card() failed: %d\n", ret); a8ad0c85 Sylwester Nawrocki 2017-08-04 308 goto err_put_clk_i2s; aba611fc Sylwester Nawrocki 2017-04-21 309 } aba611fc Sylwester Nawrocki 2017-04-21 310 aba611fc Sylwester Nawrocki 2017-04-21 311 return 0; aba611fc Sylwester Nawrocki 2017-04-21 312 a8ad0c85 Sylwester Nawrocki 2017-08-04 313 err_put_clk_i2s: a8ad0c85 Sylwester Nawrocki 2017-08-04 314 clk_put(priv->clk_i2s_bus); a8ad0c85 Sylwester Nawrocki 2017-08-04 315 err_put_sclk: a8ad0c85 Sylwester Nawrocki 2017-08-04 316 clk_put(priv->sclk_i2s); d832d2b2 Sylwester Nawrocki 2019-02-20 317 err_put_cpu_dai: d832d2b2 Sylwester Nawrocki 2019-02-20 318 of_node_put(cpu_dai); bc3cf17b Sylwester Nawrocki 2019-02-14 319 snd_soc_of_put_dai_link_codecs(codec_link); aba611fc Sylwester Nawrocki 2017-04-21 320 return ret; aba611fc Sylwester Nawrocki 2017-04-21 321 } aba611fc Sylwester Nawrocki 2017-04-21 322
:::::: The code at line 298 was first introduced by commit :::::: bc3cf17b575a7a97b4af7ddcf86133175da7a582 ASoC: samsung: odroid: Add support for secondary CPU DAI
:::::: TO: Sylwester Nawrocki s.nawrocki@samsung.com :::::: CC: Mark Brown broonie@kernel.org
--- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
participants (1)
-
kbuild test robot