All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: [plbossart-sound:fix/hda-dai-suspend 37/49] sound/soc/sof/ipc3-topology.c:1271:22: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
Date: Wed, 29 Dec 2021 00:02:35 +0800	[thread overview]
Message-ID: <202112282355.Xfde66Iv-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 36108 bytes --]

CC: kbuild-all(a)lists.01.org
TO: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
CC: "Pierre-Louis Bossart" <pierre-louis.bossart@linux.intel.com>

tree:   https://github.com/thesofproject/linux fix/hda-dai-suspend
head:   7f41ec721b3ae5514d60ebcf8bb3845c7449ab9e
commit: a86a91dc9eefa395b785190f43a9ecebbccb5bba [37/49] ASoC: SOF: topology: Make DAI widget parsing IPC agnostic
:::::: branch date: 13 days ago
:::::: commit date: 2 weeks ago
config: riscv-randconfig-c006-20211228 (https://download.01.org/0day-ci/archive/20211228/202112282355.Xfde66Iv-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 7171af744543433ac75b232eb7dfdaef7efd4d7a)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # https://github.com/thesofproject/linux/commit/a86a91dc9eefa395b785190f43a9ecebbccb5bba
        git remote add thesofproject https://github.com/thesofproject/linux
        git fetch --no-tags thesofproject plbossart-sound/fix/hda-dai-suspend
        git checkout a86a91dc9eefa395b785190f43a9ecebbccb5bba
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv clang-analyzer 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
               ^~~~
   sound/soc/codecs/madera.c:4656:2: note: Taking true branch
           if (fout)
           ^
   sound/soc/codecs/madera.c:4659:6: note: Assuming 'source' is not equal to field 'ref_src'
           if (fll->ref_src == source && fll->ref_freq == fin &&
               ^~~~~~~~~~~~~~~~~~~~~~
   sound/soc/codecs/madera.c:4659:29: note: Left side of '&&' is false
           if (fll->ref_src == source && fll->ref_freq == fin &&
                                      ^
   sound/soc/codecs/madera.c:4663:6: note: Assuming 'fin' is 0
           if (fin && fout && madera_fllhj_validate(fll, fin, fout))
               ^~~
   sound/soc/codecs/madera.c:4663:10: note: Left side of '&&' is false
           if (fin && fout && madera_fllhj_validate(fll, fin, fout))
                   ^
   sound/soc/codecs/madera.c:4670:6: note: Assuming 'fout' is not equal to 0
           if (fout)
               ^~~~
   sound/soc/codecs/madera.c:4670:2: note: Taking true branch
           if (fout)
           ^
   sound/soc/codecs/madera.c:4671:9: note: Calling 'madera_fllhj_enable'
                   ret = madera_fllhj_enable(fll);
                         ^~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/codecs/madera.c:4566:6: note: 'already_enabled' is >= 0
           if (already_enabled < 0)
               ^~~~~~~~~~~~~~~
   sound/soc/codecs/madera.c:4566:2: note: Taking false branch
           if (already_enabled < 0)
           ^
   sound/soc/codecs/madera.c:4569:6: note: Assuming 'already_enabled' is 0
           if (!already_enabled)
               ^~~~~~~~~~~~~~~~
   sound/soc/codecs/madera.c:4569:2: note: Taking true branch
           if (!already_enabled)
           ^
   sound/soc/codecs/madera.c:4572:2: note: Taking false branch
           madera_fll_dbg(fll, "Enabling FLL, initially %s\n",
           ^
   sound/soc/codecs/madera.c:147:2: note: expanded from macro 'madera_fll_dbg'
           dev_dbg(_fll->madera->dev, "FLL%d: " fmt, _fll->id, ##__VA_ARGS__)
           ^
   include/linux/dev_printk.h:162:2: note: expanded from macro 'dev_dbg'
           if (0)                                                          \
           ^
   sound/soc/codecs/madera.c:4581:6: note: 'already_enabled' is 0
           if (already_enabled)
               ^~~~~~~~~~~~~~~
   sound/soc/codecs/madera.c:4581:2: note: Taking false branch
           if (already_enabled)
           ^
   sound/soc/codecs/madera.c:4585:8: note: Calling 'madera_fllhj_apply'
           ret = madera_fllhj_apply(fll, fll->ref_freq);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/codecs/madera.c:4422:2: note: Taking false branch
           madera_fll_dbg(fll, "fin=%d, fout=%d\n", fin, fll->fout);
           ^
   sound/soc/codecs/madera.c:147:2: note: expanded from macro 'madera_fll_dbg'
           dev_dbg(_fll->madera->dev, "FLL%d: " fmt, _fll->id, ##__VA_ARGS__)
           ^
   include/linux/dev_printk.h:162:2: note: expanded from macro 'dev_dbg'
           if (0)                                                          \
           ^
   sound/soc/codecs/madera.c:4424:2: note: Loop condition is true.  Entering loop body
           for (refdiv = 0; refdiv < 4; refdiv++)
           ^
   sound/soc/codecs/madera.c:4425:3: note: Taking true branch
                   if ((fin / (1 << refdiv)) <= MADERA_FLLHJ_MAX_THRESH)
                   ^
   sound/soc/codecs/madera.c:4426:4: note:  Execution continues on line 4428
                           break;
                           ^
   sound/soc/codecs/madera.c:4428:2: note: The value 0 is assigned to 'fref'
           fref = fin / (1 << refdiv);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/codecs/madera.c:4435:14: note: Division by zero
           frac = fout % fref;
                  ~~~~~^~~~~~
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   sound/soc/sof/sof-audio.c:944:29: warning: Value stored to 'desc' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           const struct sof_dev_desc *desc = sof_pdata->desc;
                                      ^~~~   ~~~~~~~~~~~~~~~
   sound/soc/sof/sof-audio.c:944:29: note: Value stored to 'desc' during its initialization is never read
           const struct sof_dev_desc *desc = sof_pdata->desc;
                                      ^~~~   ~~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   4 warnings generated.
>> sound/soc/sof/ipc3-topology.c:1271:22: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
           dai->current_config = current_config;
                               ^
   sound/soc/sof/ipc3-topology.c:1390:6: note: Assuming 'private' is non-null
           if (!private)
               ^~~~~~~~
   sound/soc/sof/ipc3-topology.c:1390:2: note: Taking false branch
           if (!private)
           ^
   sound/soc/sof/ipc3-topology.c:1396:16: note: Field 'comp_dai' is non-null
           if (!private->comp_dai) {
                         ^
   sound/soc/sof/ipc3-topology.c:1396:2: note: Taking false branch
           if (!private->comp_dai) {
           ^
   sound/soc/sof/ipc3-topology.c:1410:6: note: Assuming 'ret' is >= 0
           if (ret < 0)
               ^~~~~~~
   sound/soc/sof/ipc3-topology.c:1410:2: note: Taking false branch
           if (ret < 0)
           ^
   sound/soc/sof/ipc3-topology.c:1417:6: note: Assuming 'ret' is >= 0
           if (ret < 0)
               ^~~~~~~
   sound/soc/sof/ipc3-topology.c:1417:2: note: Taking false branch
           if (ret < 0)
           ^
   sound/soc/sof/ipc3-topology.c:1420:2: note: Taking false branch
           dev_dbg(scomp->dev, "%s dai %s: type %d index %d\n",
           ^
   include/linux/dev_printk.h:162:2: note: expanded from macro 'dev_dbg'
           if (0)                                                          \
           ^
   sound/soc/sof/ipc3-topology.c:1425:2: note: Loop condition is true.  Entering loop body
           list_for_each_entry(slink, &sdev->dai_link_list, list) {
           ^
   include/linux/list.h:630:2: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
           ^
   sound/soc/sof/ipc3-topology.c:1429:7: note: Assuming the condition is false
                   if (strcmp(slink->link->name, dai->name))
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/sof/ipc3-topology.c:1429:3: note: Taking false branch
                   if (strcmp(slink->link->name, dai->name))
                   ^
   sound/soc/sof/ipc3-topology.c:1434:7: note: Assuming 'config' is non-null
                   if (!config) {
                       ^~~~~~~
   sound/soc/sof/ipc3-topology.c:1434:3: note: Taking false branch
                   if (!config) {
                   ^
   sound/soc/sof/ipc3-topology.c:1443:7: note: Assuming 'ret' is >= 0
                   if (ret < 0)
                       ^~~~~~~
   sound/soc/sof/ipc3-topology.c:1443:3: note: Taking false branch
                   if (ret < 0)
                   ^
   sound/soc/sof/ipc3-topology.c:1446:15: note: Assuming 'i' is >= field 'num_hw_configs'
                   for (i = 0; i < slink->num_hw_configs; i++) {
                               ^~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/sof/ipc3-topology.c:1446:3: note: Loop condition is false. Execution continues on line 1453
                   for (i = 0; i < slink->num_hw_configs; i++) {
                   ^
   sound/soc/sof/ipc3-topology.c:1453:3: note: Control jumps to 'case SOF_DAI_INTEL_SSP:'  at line 1454
                   switch (common_config.type) {
                   ^
   sound/soc/sof/ipc3-topology.c:1455:10: note: Calling 'sof_link_ssp_load'
                           ret = sof_link_ssp_load(scomp, slink, config, dai);
                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/sof/ipc3-topology.c:1219:2: note: 'current_config' declared without an initial value
           int current_config;
           ^~~~~~~~~~~~~~~~~~
   sound/soc/sof/ipc3-topology.c:1227:6: note: Assuming 'ret' is >= 0
           if (ret < 0)
               ^~~~~~~
   sound/soc/sof/ipc3-topology.c:1227:2: note: Taking false branch
           if (ret < 0)
           ^
   sound/soc/sof/ipc3-topology.c:1231:14: note: 'i' is >= field 'num_hw_configs'
           for (i = 0; i < slink->num_hw_configs; i++) {
                       ^
   sound/soc/sof/ipc3-topology.c:1231:2: note: Loop condition is false. Execution continues on line 1270
           for (i = 0; i < slink->num_hw_configs; i++) {
           ^
   sound/soc/sof/ipc3-topology.c:1271:22: note: Assigned value is garbage or undefined
           dai->current_config = current_config;
                               ^ ~~~~~~~~~~~~~~
>> sound/soc/sof/ipc3-topology.c:1501:2: warning: Attempt to free released memory [clang-analyzer-unix.Malloc]
           kfree(private);
           ^~~~~~~~~~~~~~
   sound/soc/sof/ipc3-topology.c:1390:6: note: Assuming 'private' is non-null
           if (!private)
               ^~~~~~~~
   sound/soc/sof/ipc3-topology.c:1390:2: note: Taking false branch
           if (!private)
           ^
   sound/soc/sof/ipc3-topology.c:1396:16: note: Field 'comp_dai' is null
           if (!private->comp_dai) {
                         ^
   sound/soc/sof/ipc3-topology.c:1396:2: note: Taking true branch
           if (!private->comp_dai) {
           ^
   sound/soc/sof/ipc3-topology.c:1397:3: note: Memory is released
                   kfree(private);
                   ^~~~~~~~~~~~~~
   sound/soc/sof/ipc3-topology.c:1399:3: note: Control jumps to line 1501
                   goto free;
                   ^
   sound/soc/sof/ipc3-topology.c:1501:2: note: Attempt to free released memory
           kfree(private);
           ^~~~~~~~~~~~~~
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   4 warnings generated.
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c:299:16: warning: The result of the left shift is undefined due to shifting '3' by '31', which is unrepresentable in the unsigned version of the return type 'int' [clang-analyzer-core.UndefinedBinaryOperatorResult]
                   slv_config = ST_LSM6DSX_SHIFT_VAL(3, aux_sens->mask);
                                ^
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h:65:49: note: expanded from macro 'ST_LSM6DSX_SHIFT_VAL'
   #define ST_LSM6DSX_SHIFT_VAL(val, mask) (((val) << __ffs(mask)) & (mask))
                                                   ^
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c:561:2: note: Control jumps to 'case IIO_CHAN_INFO_RAW:' @line 562
           switch (mask) {
           ^
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c:564:7: note: Assuming 'ret' is 0
                   if (ret)
                       ^~~
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c:564:3: note: Taking false branch
                   if (ret)
                   ^
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c:567:9: note: Calling 'st_lsm6dsx_shub_read_oneshot'
                   ret = st_lsm6dsx_shub_read_oneshot(sensor, ch, val);
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c:527:6: note: Assuming 'err' is >= 0
           if (err < 0)
               ^~~~~~~
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c:527:2: note: Taking false branch
           if (err < 0)
           ^
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c:533:8: note: Assuming '__UNIQUE_ID___x265' is >= '__UNIQUE_ID___y266'
           len = min_t(int, sizeof(data), ch->scan_type.realbits >> 3);
                 ^
   include/linux/minmax.h:104:27: note: expanded from macro 'min_t'
   #define min_t(type, x, y)       __careful_cmp((type)(x), (type)(y), <)
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
                   __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
                   __cmp(unique_x, unique_y, op); })
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^~~~~~~~~~
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c:533:8: note: '?' condition is false
           len = min_t(int, sizeof(data), ch->scan_type.realbits >> 3);
                 ^
   include/linux/minmax.h:104:27: note: expanded from macro 'min_t'
   #define min_t(type, x, y)       __careful_cmp((type)(x), (type)(y), <)
                                   ^
   include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
                   __cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
                   ^
   include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
                   __cmp(unique_x, unique_y, op); })
                   ^
   include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
   #define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
                            ^
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c:534:8: note: Calling 'st_lsm6dsx_shub_read'
           err = st_lsm6dsx_shub_read(sensor, ch->address, data, len);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c:298:6: note: Assuming the condition is true
           if (slv_addr + 2 == aux_sens->addr)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c:298:2: note: Taking true branch
           if (slv_addr + 2 == aux_sens->addr)
           ^
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_shub.c:299:16: note: The result of the left shift is undefined due to shifting '3' by '31', which is unrepresentable in the unsigned version of the return type 'int'
                   slv_config = ST_LSM6DSX_SHIFT_VAL(3, aux_sens->mask);
                                ^
   drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h:65:49: note: expanded from macro 'ST_LSM6DSX_SHIFT_VAL'
   #define ST_LSM6DSX_SHIFT_VAL(val, mask) (((val) << __ffs(mask)) & (mask))
                                             ~~~~~ ^
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
--
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   drivers/hwtracing/intel_th/msu.c:860:2: warning: Value stored to 'reg' is never read [clang-analyzer-deadcode.DeadStores]
           reg = ioread32(msc->reg_base + REG_MSU_MSC0STS);
           ^
   drivers/hwtracing/intel_th/msu.c:860:2: note: Value stored to 'reg' is never read
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   sound/soc/sof/ipc.c:412:18: warning: The left operand of '<' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult]
           if (reply.error < 0) {
               ~~~~~~~~~~~ ^
   sound/soc/sof/ipc.c:403:6: note: Assuming 'msg' is non-null
           if (!msg) {
               ^~~~
   sound/soc/sof/ipc.c:403:2: note: Taking false branch
           if (!msg) {
           ^
   sound/soc/sof/ipc.c:409:2: note: Calling 'snd_sof_dsp_mailbox_read'
           snd_sof_dsp_mailbox_read(sdev, sdev->host_box.offset, &reply,
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/sof/ops.h:352:6: note: Assuming field 'mailbox_read' is null
           if (sof_ops(sdev)->mailbox_read)
               ^
   sound/soc/sof/ops.h:22:2: note: expanded from macro 'sof_ops'
           ((sdev)->pdata->desc->ops)
           ^
   sound/soc/sof/ops.h:352:2: note: Taking false branch
           if (sof_ops(sdev)->mailbox_read)
           ^
   sound/soc/sof/ops.h:354:1: note: Returning without writing to 'dest->error'
   }
   ^
   sound/soc/sof/ipc.c:409:2: note: Returning from 'snd_sof_dsp_mailbox_read'
           snd_sof_dsp_mailbox_read(sdev, sdev->host_box.offset, &reply,
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/sof/ipc.c:412:18: note: The left operand of '<' is a garbage value
           if (reply.error < 0) {
               ~~~~~~~~~~~ ^
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   3 warnings generated.
   sound/soc/sof/pcm.c:509:2: warning: Value stored to 'dai' is never read [clang-analyzer-deadcode.DeadStores]
           dai = bytes_to_frames(substream->runtime,
           ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/sof/pcm.c:509:2: note: Value stored to 'dai' is never read
           dai = bytes_to_frames(substream->runtime,
           ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
   5 warnings generated.
>> sound/soc/sof/topology.c:1551:14: warning: Use of memory after it is freed [clang-analyzer-unix.Malloc]
                   int core = sof_get_token_value(SOF_TKN_COMP_CORE_ID, swidget->tuples,
                              ^                                         ~~~~~~~~~~~~~~~
   sound/soc/sof/topology.c:1470:6: note: Assuming 'swidget' is non-null
           if (!swidget)
               ^~~~~~~~
   sound/soc/sof/topology.c:1470:2: note: Taking false branch
           if (!swidget)
           ^
   sound/soc/sof/topology.c:1481:2: note: Taking false branch
           dev_dbg(scomp->dev, "tplg: ready widget id %d pipe %d type %d name : %s stream %s\n",
           ^
   include/linux/dev_printk.h:162:2: note: expanded from macro 'dev_dbg'
           if (0)                                                          \
           ^
   sound/soc/sof/topology.c:1490:2: note: Control jumps to 'case snd_soc_dapm_demux:'  at line 1537
           switch (w->id) {
           ^
   sound/soc/sof/topology.c:1538:9: note: Calling 'sof_widget_parse_tokens'
                   ret = sof_widget_parse_tokens(scomp, swidget, tw,  token_list, token_list_size);
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/sof/topology.c:1351:6: note: Assuming 'count' is > 0
           if (count > 0 && !object_token_list) {
               ^~~~~~~~~
   sound/soc/sof/topology.c:1351:6: note: Left side of '&&' is true
   sound/soc/sof/topology.c:1351:19: note: Assuming 'object_token_list' is non-null
           if (count > 0 && !object_token_list) {
                            ^~~~~~~~~~~~~~~~~~
   sound/soc/sof/topology.c:1351:2: note: Taking false branch
           if (count > 0 && !object_token_list) {
           ^
   sound/soc/sof/topology.c:1357:14: note: 'i' is < 'count'
           for (i = 0; i < count; i++)
                       ^
   sound/soc/sof/topology.c:1357:2: note: Loop condition is true.  Entering loop body
           for (i = 0; i < count; i++)
           ^
   sound/soc/sof/topology.c:1357:14: note: Assuming 'i' is >= 'count'
           for (i = 0; i < count; i++)
                       ^~~~~~~~~
   sound/soc/sof/topology.c:1357:2: note: Loop condition is false. Execution continues on line 1361
           for (i = 0; i < count; i++)
           ^
   sound/soc/sof/topology.c:1363:6: note: Assuming field 'tuples' is non-null
           if (!swidget->tuples)
               ^~~~~~~~~~~~~~~~
   sound/soc/sof/topology.c:1363:2: note: Taking false branch
           if (!swidget->tuples)
           ^
   sound/soc/sof/topology.c:1367:2: note: Loop condition is true.  Entering loop body
           for (i = 0; i < count; i++) {
           ^
   sound/soc/sof/topology.c:1368:7: note: Assuming the condition is true
                   if (object_token_list[i] >= SOF_TOKEN_COUNT) {
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/sof/topology.c:1368:3: note: Taking true branch
                   if (object_token_list[i] >= SOF_TOKEN_COUNT) {
                   ^
   sound/soc/sof/topology.c:1369:4: note: Loop condition is false.  Exiting loop
                           dev_err(scomp->dev, "Invalid token id %d for widget %s\n",
                           ^
   include/linux/dev_printk.h:144:2: note: expanded from macro 'dev_err'
           dev_printk_index_wrap(_dev_err, KERN_ERR, dev, dev_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/dev_printk.h:109:3: note: expanded from macro 'dev_printk_index_wrap'
                   dev_printk_index_emit(level, fmt);                      \
                   ^
   include/linux/dev_printk.h:105:2: note: expanded from macro 'dev_printk_index_emit'
           printk_index_subsys_emit("%s %s: ", level, fmt)
           ^
   include/linux/printk.h:413:2: note: expanded from macro 'printk_index_subsys_emit'
           __printk_index_emit(fmt, level, subsys_fmt_prefix)
           ^
   include/linux/printk.h:392:34: note: expanded from macro '__printk_index_emit'
   #define __printk_index_emit(...) do {} while (0)
                                    ^
   sound/soc/sof/topology.c:1372:4: note: Control jumps to line 1404
                           goto err;
                           ^
   sound/soc/sof/topology.c:1404:2: note: Memory is released
           kfree(swidget->tuples);
           ^~~~~~~~~~~~~~~~~~~~~~
   sound/soc/sof/topology.c:1538:9: note: Returning; memory was released
                   ret = sof_widget_parse_tokens(scomp, swidget, tw,  token_list, token_list_size);
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/sof/topology.c:1539:3: note:  Execution continues on line 1548
                   break;
                   ^
   sound/soc/sof/topology.c:1548:6: note: Assuming the condition is false
           if (sof_debug_check_flag(SOF_DBG_DISABLE_MULTICORE)) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/sof/topology.c:1548:2: note: Taking false branch
           if (sof_debug_check_flag(SOF_DBG_DISABLE_MULTICORE)) {
           ^
   sound/soc/sof/topology.c:1551:14: note: Use of memory after it is freed
                   int core = sof_get_token_value(SOF_TKN_COMP_CORE_ID, swidget->tuples,
                              ^                                         ~~~~~~~~~~~~~~~
   sound/soc/sof/topology.c:1950:8: warning: 4th function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
           ret = sof_copy_tuples(sdev, private->array, le32_to_cpu(private->size),
                 ^
   sound/soc/sof/topology.c:1829:2: note: 'token_id' declared without an initial value

vim +1271 sound/soc/sof/ipc3-topology.c

a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1212  
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1213  static int sof_link_ssp_load(struct snd_soc_component *scomp, struct snd_sof_dai_link *slink,
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1214  			     struct sof_ipc_dai_config *config, struct snd_sof_dai *dai)
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1215  {
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1216  	struct snd_soc_tplg_hw_config *hw_config = slink->hw_configs;
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1217  	struct sof_dai_private_data *private = dai->private;
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1218  	u32 size = sizeof(*config);
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1219  	int current_config;
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1220  	int i, ret;
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1221  
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1222  	/*
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1223  	 * Parse common data, we should have 1 common data per hw_config.
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1224  	 */
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1225  	ret = sof_update_ipc_object(scomp, &config->ssp, SOF_SSP_TOKENS, slink->tuples,
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1226  				    slink->num_tuples, size, slink->num_hw_configs);
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1227  	if (ret < 0)
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1228  		return ret;
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1229  
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1230  	/* process all possible hw configs */
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1231  	for (i = 0; i < slink->num_hw_configs; i++) {
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1232  		if (le32_to_cpu(hw_config[i].id) == slink->default_hw_cfg_id)
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1233  			current_config = i;
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1234  
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1235  		/* handle master/slave and inverted clocks */
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1236  		sof_dai_set_format(&hw_config[i], &config[i]);
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1237  
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1238  		config[i].hdr.size = size;
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1239  
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1240  		/* copy differentiating hw configs to ipc structs */
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1241  		config[i].ssp.mclk_rate = le32_to_cpu(hw_config[i].mclk_rate);
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1242  		config[i].ssp.bclk_rate = le32_to_cpu(hw_config[i].bclk_rate);
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1243  		config[i].ssp.fsync_rate = le32_to_cpu(hw_config[i].fsync_rate);
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1244  		config[i].ssp.tdm_slots = le32_to_cpu(hw_config[i].tdm_slots);
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1245  		config[i].ssp.tdm_slot_width = le32_to_cpu(hw_config[i].tdm_slot_width);
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1246  		config[i].ssp.mclk_direction = hw_config[i].mclk_direction;
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1247  		config[i].ssp.rx_slots = le32_to_cpu(hw_config[i].rx_slots);
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1248  		config[i].ssp.tx_slots = le32_to_cpu(hw_config[i].tx_slots);
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1249  
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1250  		dev_dbg(scomp->dev, "tplg: config SSP%d fmt %#x mclk %d bclk %d fclk %d width (%d)%d slots %d mclk id %d quirks %d clks_control %#x\n",
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1251  			config[i].dai_index, config[i].format,
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1252  			config[i].ssp.mclk_rate, config[i].ssp.bclk_rate,
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1253  			config[i].ssp.fsync_rate, config[i].ssp.sample_valid_bits,
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1254  			config[i].ssp.tdm_slot_width, config[i].ssp.tdm_slots,
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1255  			config[i].ssp.mclk_id, config[i].ssp.quirks, config[i].ssp.clks_control);
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1256  
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1257  		/* validate SSP fsync rate and channel count */
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1258  		if (config[i].ssp.fsync_rate < 8000 || config[i].ssp.fsync_rate > 192000) {
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1259  			dev_err(scomp->dev, "Invalid fsync rate for SSP%d\n", config[i].dai_index);
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1260  			return -EINVAL;
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1261  		}
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1262  
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1263  		if (config[i].ssp.tdm_slots < 1 || config[i].ssp.tdm_slots > 8) {
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1264  			dev_err(scomp->dev, "Invalid channel count for SSP%d\n",
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1265  				config[i].dai_index);
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1266  			return -EINVAL;
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1267  		}
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1268  	}
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1269  
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1270  	dai->number_configs = slink->num_hw_configs;
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04 @1271  	dai->current_config = current_config;
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1272  	private->dai_config = kmemdup(config, size * slink->num_hw_configs, GFP_KERNEL);
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1273  	if (!private->dai_config)
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1274  		return -ENOMEM;
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1275  
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1276  	return 0;
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1277  }
a86a91dc9eefa3 Ranjani Sridharan 2021-12-04  1278  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

                 reply	other threads:[~2021-12-28 16:02 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=202112282355.Xfde66Iv-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild@lists.01.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.