CC: [email protected] TO: Jaska Uimonen <[email protected]> CC: Ranjani Sridharan <[email protected]>
tree: https://github.com/plbossart/sound sdw/fix-rt711-sdca-entity head: 5d75f35655cc306c3b4eb57418099b2a0869850d commit: 434aeb3af2157013f49275256a3a06a01573e29f [5016/5017] ASoC: dapm: Add support for multiple kcontrol types to a widget :::::: branch date: 4 hours ago :::::: commit date: 26 hours ago config: i386-randconfig-m021-20210504 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: sound/soc/soc-topology.c:1560 soc_tplg_dapm_widget_create() error: uninitialized symbol 'kcontrol_type'. sound/soc/soc-topology.c:1579 soc_tplg_dapm_widget_create() error: uninitialized symbol 'kc'. sound/soc/soc-topology.c:1579 soc_tplg_dapm_widget_create() warn: passing devm_ allocated variable to kfree. 'kc' vim +/kcontrol_type +1560 sound/soc/soc-topology.c 8a9782346dccd8 Liam Girdwood 2015-05-29 1419 8a9782346dccd8 Liam Girdwood 2015-05-29 1420 static int soc_tplg_dapm_widget_create(struct soc_tplg *tplg, 8a9782346dccd8 Liam Girdwood 2015-05-29 1421 struct snd_soc_tplg_dapm_widget *w) 8a9782346dccd8 Liam Girdwood 2015-05-29 1422 { 8a9782346dccd8 Liam Girdwood 2015-05-29 1423 struct snd_soc_dapm_context *dapm = &tplg->comp->dapm; 8a9782346dccd8 Liam Girdwood 2015-05-29 1424 struct snd_soc_dapm_widget template, *widget; 8a9782346dccd8 Liam Girdwood 2015-05-29 1425 struct snd_soc_tplg_ctl_hdr *control_hdr; 8a9782346dccd8 Liam Girdwood 2015-05-29 1426 struct snd_soc_card *card = tplg->comp->card; 434aeb3af21570 Jaska Uimonen 2020-09-08 1427 unsigned int *kcontrol_type; 434aeb3af21570 Jaska Uimonen 2020-09-08 1428 struct snd_kcontrol_new *kc; 434aeb3af21570 Jaska Uimonen 2020-09-08 1429 int mixer_count = 0; 434aeb3af21570 Jaska Uimonen 2020-09-08 1430 int bytes_count = 0; 434aeb3af21570 Jaska Uimonen 2020-09-08 1431 int enum_count = 0; 8a9782346dccd8 Liam Girdwood 2015-05-29 1432 int ret = 0; 434aeb3af21570 Jaska Uimonen 2020-09-08 1433 int i; 8a9782346dccd8 Liam Girdwood 2015-05-29 1434 8a9782346dccd8 Liam Girdwood 2015-05-29 1435 if (strnlen(w->name, SNDRV_CTL_ELEM_ID_NAME_MAXLEN) == 8a9782346dccd8 Liam Girdwood 2015-05-29 1436 SNDRV_CTL_ELEM_ID_NAME_MAXLEN) 8a9782346dccd8 Liam Girdwood 2015-05-29 1437 return -EINVAL; 8a9782346dccd8 Liam Girdwood 2015-05-29 1438 if (strnlen(w->sname, SNDRV_CTL_ELEM_ID_NAME_MAXLEN) == 8a9782346dccd8 Liam Girdwood 2015-05-29 1439 SNDRV_CTL_ELEM_ID_NAME_MAXLEN) 8a9782346dccd8 Liam Girdwood 2015-05-29 1440 return -EINVAL; 8a9782346dccd8 Liam Girdwood 2015-05-29 1441 8a9782346dccd8 Liam Girdwood 2015-05-29 1442 dev_dbg(tplg->dev, "ASoC: creating DAPM widget %s id %d\n", 8a9782346dccd8 Liam Girdwood 2015-05-29 1443 w->name, w->id); 8a9782346dccd8 Liam Girdwood 2015-05-29 1444 8a9782346dccd8 Liam Girdwood 2015-05-29 1445 memset(&template, 0, sizeof(template)); 8a9782346dccd8 Liam Girdwood 2015-05-29 1446 8a9782346dccd8 Liam Girdwood 2015-05-29 1447 /* map user to kernel widget ID */ 5aebe7c7f9c20e Pierre-Louis Bossart 2019-04-04 1448 template.id = get_widget_id(le32_to_cpu(w->id)); 752c938a5c14b8 Dan Carpenter 2019-09-25 1449 if ((int)template.id < 0) 8a9782346dccd8 Liam Girdwood 2015-05-29 1450 return template.id; 8a9782346dccd8 Liam Girdwood 2015-05-29 1451 c3421a6a65abc6 Liam Girdwood 2017-06-06 1452 /* strings are allocated here, but used and freed by the widget */ 8a9782346dccd8 Liam Girdwood 2015-05-29 1453 template.name = kstrdup(w->name, GFP_KERNEL); 8a9782346dccd8 Liam Girdwood 2015-05-29 1454 if (!template.name) 8a9782346dccd8 Liam Girdwood 2015-05-29 1455 return -ENOMEM; 8a9782346dccd8 Liam Girdwood 2015-05-29 1456 template.sname = kstrdup(w->sname, GFP_KERNEL); 8a9782346dccd8 Liam Girdwood 2015-05-29 1457 if (!template.sname) { 8a9782346dccd8 Liam Girdwood 2015-05-29 1458 ret = -ENOMEM; 8a9782346dccd8 Liam Girdwood 2015-05-29 1459 goto err; 8a9782346dccd8 Liam Girdwood 2015-05-29 1460 } 5aebe7c7f9c20e Pierre-Louis Bossart 2019-04-04 1461 template.reg = le32_to_cpu(w->reg); 5aebe7c7f9c20e Pierre-Louis Bossart 2019-04-04 1462 template.shift = le32_to_cpu(w->shift); 5aebe7c7f9c20e Pierre-Louis Bossart 2019-04-04 1463 template.mask = le32_to_cpu(w->mask); 5aebe7c7f9c20e Pierre-Louis Bossart 2019-04-04 1464 template.subseq = le32_to_cpu(w->subseq); 8a9782346dccd8 Liam Girdwood 2015-05-29 1465 template.on_val = w->invert ? 0 : 1; 8a9782346dccd8 Liam Girdwood 2015-05-29 1466 template.off_val = w->invert ? 1 : 0; 5aebe7c7f9c20e Pierre-Louis Bossart 2019-04-04 1467 template.ignore_suspend = le32_to_cpu(w->ignore_suspend); 5aebe7c7f9c20e Pierre-Louis Bossart 2019-04-04 1468 template.event_flags = le16_to_cpu(w->event_flags); 8a9782346dccd8 Liam Girdwood 2015-05-29 1469 template.dobj.index = tplg->index; 8a9782346dccd8 Liam Girdwood 2015-05-29 1470 8a9782346dccd8 Liam Girdwood 2015-05-29 1471 tplg->pos += 5aebe7c7f9c20e Pierre-Louis Bossart 2019-04-04 1472 (sizeof(struct snd_soc_tplg_dapm_widget) + 5aebe7c7f9c20e Pierre-Louis Bossart 2019-04-04 1473 le32_to_cpu(w->priv.size)); 5aebe7c7f9c20e Pierre-Louis Bossart 2019-04-04 1474 8a9782346dccd8 Liam Girdwood 2015-05-29 1475 if (w->num_kcontrols == 0) { 8a9782346dccd8 Liam Girdwood 2015-05-29 1476 template.num_kcontrols = 0; 8a9782346dccd8 Liam Girdwood 2015-05-29 1477 goto widget; 8a9782346dccd8 Liam Girdwood 2015-05-29 1478 } 8a9782346dccd8 Liam Girdwood 2015-05-29 1479 8a9782346dccd8 Liam Girdwood 2015-05-29 1480 control_hdr = (struct snd_soc_tplg_ctl_hdr *)tplg->pos; 8a9782346dccd8 Liam Girdwood 2015-05-29 1481 dev_dbg(tplg->dev, "ASoC: template %s has %d controls of type %x\n", 8a9782346dccd8 Liam Girdwood 2015-05-29 1482 w->name, w->num_kcontrols, control_hdr->type); 8a9782346dccd8 Liam Girdwood 2015-05-29 1483 434aeb3af21570 Jaska Uimonen 2020-09-08 1484 template.num_kcontrols = le32_to_cpu(w->num_kcontrols); 434aeb3af21570 Jaska Uimonen 2020-09-08 1485 kc = devm_kcalloc(tplg->dev, w->num_kcontrols, sizeof(*kc), GFP_KERNEL); 434aeb3af21570 Jaska Uimonen 2020-09-08 1486 if (!kc) 434aeb3af21570 Jaska Uimonen 2020-09-08 1487 goto err; 434aeb3af21570 Jaska Uimonen 2020-09-08 1488 434aeb3af21570 Jaska Uimonen 2020-09-08 1489 kcontrol_type = devm_kcalloc(tplg->dev, w->num_kcontrols, sizeof(unsigned int), GFP_KERNEL); 434aeb3af21570 Jaska Uimonen 2020-09-08 1490 if (!kcontrol_type) 434aeb3af21570 Jaska Uimonen 2020-09-08 1491 goto err; 434aeb3af21570 Jaska Uimonen 2020-09-08 1492 434aeb3af21570 Jaska Uimonen 2020-09-08 1493 for (i = 0; i < w->num_kcontrols; i++) { 434aeb3af21570 Jaska Uimonen 2020-09-08 1494 control_hdr = (struct snd_soc_tplg_ctl_hdr *)tplg->pos; 5aebe7c7f9c20e Pierre-Louis Bossart 2019-04-04 1495 switch (le32_to_cpu(control_hdr->ops.info)) { 8a9782346dccd8 Liam Girdwood 2015-05-29 1496 case SND_SOC_TPLG_CTL_VOLSW: 8a9782346dccd8 Liam Girdwood 2015-05-29 1497 case SND_SOC_TPLG_CTL_STROBE: 8a9782346dccd8 Liam Girdwood 2015-05-29 1498 case SND_SOC_TPLG_CTL_VOLSW_SX: 8a9782346dccd8 Liam Girdwood 2015-05-29 1499 case SND_SOC_TPLG_CTL_VOLSW_XR_SX: 8a9782346dccd8 Liam Girdwood 2015-05-29 1500 case SND_SOC_TPLG_CTL_RANGE: 8a9782346dccd8 Liam Girdwood 2015-05-29 1501 case SND_SOC_TPLG_DAPM_CTL_VOLSW: 434aeb3af21570 Jaska Uimonen 2020-09-08 1502 /* volume mixer */ 434aeb3af21570 Jaska Uimonen 2020-09-08 1503 kc[i].index = mixer_count; 434aeb3af21570 Jaska Uimonen 2020-09-08 1504 kcontrol_type[i] = SND_SOC_TPLG_TYPE_MIXER; 434aeb3af21570 Jaska Uimonen 2020-09-08 1505 mixer_count++; 434aeb3af21570 Jaska Uimonen 2020-09-08 1506 ret = soc_tplg_dapm_widget_dmixer_create(tplg, &kc[i]); 434aeb3af21570 Jaska Uimonen 2020-09-08 1507 if (ret < 0) 8a9782346dccd8 Liam Girdwood 2015-05-29 1508 goto hdr_err; 8a9782346dccd8 Liam Girdwood 2015-05-29 1509 break; 8a9782346dccd8 Liam Girdwood 2015-05-29 1510 case SND_SOC_TPLG_CTL_ENUM: 8a9782346dccd8 Liam Girdwood 2015-05-29 1511 case SND_SOC_TPLG_CTL_ENUM_VALUE: 8a9782346dccd8 Liam Girdwood 2015-05-29 1512 case SND_SOC_TPLG_DAPM_CTL_ENUM_DOUBLE: 8a9782346dccd8 Liam Girdwood 2015-05-29 1513 case SND_SOC_TPLG_DAPM_CTL_ENUM_VIRT: 8a9782346dccd8 Liam Girdwood 2015-05-29 1514 case SND_SOC_TPLG_DAPM_CTL_ENUM_VALUE: 434aeb3af21570 Jaska Uimonen 2020-09-08 1515 /* enumerated mixer */ 434aeb3af21570 Jaska Uimonen 2020-09-08 1516 kc[i].index = enum_count; 434aeb3af21570 Jaska Uimonen 2020-09-08 1517 kcontrol_type[i] = SND_SOC_TPLG_TYPE_ENUM; 434aeb3af21570 Jaska Uimonen 2020-09-08 1518 enum_count++; 434aeb3af21570 Jaska Uimonen 2020-09-08 1519 ret = soc_tplg_dapm_widget_denum_create(tplg, &kc[i]); 434aeb3af21570 Jaska Uimonen 2020-09-08 1520 if (ret < 0) 8a9782346dccd8 Liam Girdwood 2015-05-29 1521 goto hdr_err; 8a9782346dccd8 Liam Girdwood 2015-05-29 1522 break; 8a9782346dccd8 Liam Girdwood 2015-05-29 1523 case SND_SOC_TPLG_CTL_BYTES: 434aeb3af21570 Jaska Uimonen 2020-09-08 1524 /* bytes control */ 434aeb3af21570 Jaska Uimonen 2020-09-08 1525 kc[i].index = bytes_count; 434aeb3af21570 Jaska Uimonen 2020-09-08 1526 kcontrol_type[i] = SND_SOC_TPLG_TYPE_BYTES; 434aeb3af21570 Jaska Uimonen 2020-09-08 1527 bytes_count++; 434aeb3af21570 Jaska Uimonen 2020-09-08 1528 ret = soc_tplg_dapm_widget_dbytes_create(tplg, &kc[i]); 434aeb3af21570 Jaska Uimonen 2020-09-08 1529 if (ret < 0) 8a9782346dccd8 Liam Girdwood 2015-05-29 1530 goto hdr_err; 8a9782346dccd8 Liam Girdwood 2015-05-29 1531 break; 8a9782346dccd8 Liam Girdwood 2015-05-29 1532 default: 8a9782346dccd8 Liam Girdwood 2015-05-29 1533 dev_err(tplg->dev, "ASoC: invalid widget control type %d:%d:%d\n", 8a9782346dccd8 Liam Girdwood 2015-05-29 1534 control_hdr->ops.get, control_hdr->ops.put, 5aebe7c7f9c20e Pierre-Louis Bossart 2019-04-04 1535 le32_to_cpu(control_hdr->ops.info)); 8a9782346dccd8 Liam Girdwood 2015-05-29 1536 ret = -EINVAL; 8a9782346dccd8 Liam Girdwood 2015-05-29 1537 goto hdr_err; 8a9782346dccd8 Liam Girdwood 2015-05-29 1538 } 434aeb3af21570 Jaska Uimonen 2020-09-08 1539 } 434aeb3af21570 Jaska Uimonen 2020-09-08 1540 434aeb3af21570 Jaska Uimonen 2020-09-08 1541 template.kcontrol_news = kc; 8a9782346dccd8 Liam Girdwood 2015-05-29 1542 8a9782346dccd8 Liam Girdwood 2015-05-29 1543 widget: 8a9782346dccd8 Liam Girdwood 2015-05-29 1544 ret = soc_tplg_widget_load(tplg, &template, w); 8a9782346dccd8 Liam Girdwood 2015-05-29 1545 if (ret < 0) 8a9782346dccd8 Liam Girdwood 2015-05-29 1546 goto hdr_err; 8a9782346dccd8 Liam Girdwood 2015-05-29 1547 8a9782346dccd8 Liam Girdwood 2015-05-29 1548 /* card dapm mutex is held by the core if we are loading topology 8a9782346dccd8 Liam Girdwood 2015-05-29 1549 * data during sound card init. */ 8a9782346dccd8 Liam Girdwood 2015-05-29 1550 if (card->instantiated) 8a9782346dccd8 Liam Girdwood 2015-05-29 1551 widget = snd_soc_dapm_new_control(dapm, &template); 8a9782346dccd8 Liam Girdwood 2015-05-29 1552 else 8a9782346dccd8 Liam Girdwood 2015-05-29 1553 widget = snd_soc_dapm_new_control_unlocked(dapm, &template); 37e1df8c95e2c8 Linus Walleij 2017-01-13 1554 if (IS_ERR(widget)) { 37e1df8c95e2c8 Linus Walleij 2017-01-13 1555 ret = PTR_ERR(widget); 8a9782346dccd8 Liam Girdwood 2015-05-29 1556 goto hdr_err; 8a9782346dccd8 Liam Girdwood 2015-05-29 1557 } 8a9782346dccd8 Liam Girdwood 2015-05-29 1558 8a9782346dccd8 Liam Girdwood 2015-05-29 1559 widget->dobj.type = SND_SOC_DOBJ_WIDGET; eea3dd4f1247aa Mengdong Lin 2016-11-25 @1560 widget->dobj.widget.kcontrol_type = kcontrol_type; 8a9782346dccd8 Liam Girdwood 2015-05-29 1561 widget->dobj.ops = tplg->ops; 8a9782346dccd8 Liam Girdwood 2015-05-29 1562 widget->dobj.index = tplg->index; 8a9782346dccd8 Liam Girdwood 2015-05-29 1563 list_add(&widget->dobj.list, &tplg->comp->dobj_list); ebd259d33a900b Liam Girdwood 2017-06-09 1564 ebd259d33a900b Liam Girdwood 2017-06-09 1565 ret = soc_tplg_widget_ready(tplg, widget, w); ebd259d33a900b Liam Girdwood 2017-06-09 1566 if (ret < 0) ebd259d33a900b Liam Girdwood 2017-06-09 1567 goto ready_err; ebd259d33a900b Liam Girdwood 2017-06-09 1568 7620fe9161cec2 Bard liao 2019-01-25 1569 kfree(template.sname); 7620fe9161cec2 Bard liao 2019-01-25 1570 kfree(template.name); 7620fe9161cec2 Bard liao 2019-01-25 1571 8a9782346dccd8 Liam Girdwood 2015-05-29 1572 return 0; 8a9782346dccd8 Liam Girdwood 2015-05-29 1573 ebd259d33a900b Liam Girdwood 2017-06-09 1574 ready_err: 841fb1096713bd Amadeusz Sławiński 2020-10-30 1575 remove_widget(widget->dapm->component, &widget->dobj, SOC_TPLG_PASS_WIDGET); ebd259d33a900b Liam Girdwood 2017-06-09 1576 snd_soc_dapm_free_widget(widget); 8a9782346dccd8 Liam Girdwood 2015-05-29 1577 hdr_err: 8a9782346dccd8 Liam Girdwood 2015-05-29 1578 kfree(template.sname); 434aeb3af21570 Jaska Uimonen 2020-09-08 @1579 kfree(kc); 8a9782346dccd8 Liam Girdwood 2015-05-29 1580 err: 8a9782346dccd8 Liam Girdwood 2015-05-29 1581 kfree(template.name); 8a9782346dccd8 Liam Girdwood 2015-05-29 1582 return ret; 8a9782346dccd8 Liam Girdwood 2015-05-29 1583 } 8a9782346dccd8 Liam Girdwood 2015-05-29 1584 :::::: The code at line 1560 was first introduced by commit :::::: eea3dd4f1247aa8654194fb19ade22c94c42e41a ASoC: topology: Only free TLV for volume mixers of a widget :::::: TO: Mengdong Lin <[email protected]> :::::: CC: Mark Brown <[email protected]> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
