[alsa-devel] ASoC: Intel: sst: Add IPC handling

Dan Carpenter dan.carpenter at oracle.com
Tue Nov 25 10:20:31 CET 2014


Hello Vinod Koul,

The patch ea12aa4acd70: "ASoC: Intel: sst: Add IPC handling" from Oct
16, 2014, leads to the following static checker warning:

	sound/soc/intel/sst/sst_ipc.c:340 sst_process_reply_mrfld()
	warn: we tested 'drv_id' before and it was 'true'

sound/soc/intel/sst/sst_ipc.c
   330          drv_id = msg_high.part.drv_id;
   331  
   332          /* Check for async messages first */
   333          if (drv_id == SST_ASYNC_DRV_ID) {
                              ^^^^^^^^^^^^^^^^
This is zero.

   334                  /*FW sent async large message*/
   335                  process_fw_async_msg(sst_drv_ctx, msg);
   336                  return;
   337          }
   338  
   339          /* FW sent short error response for an IPC */
   340          if (msg_high.part.result && drv_id && !msg_high.part.large) {
                                            ^^^^^^
So this is non-zero.  The thinking behind these warnings is that maybe
a different test was intended.  What does a non-zero drv_id mean which
is different from checking SST_ASYNC_DRV_ID?  The intent is not clear.

In other words, would it be more readable to test "drv_id != SST_ASYNC_DRV_ID"?
But in that case, we would just leave the test out since we obviously
tested for that earlier.

   341                  /* 32-bit FW error code in msg_low */
   342                  dev_err(sst_drv_ctx->dev, "FW sent error response 0x%x", msg_low);
   343                  sst_wake_up_block(sst_drv_ctx, msg_high.part.result,
   344                          msg_high.part.drv_id,
   345                          msg_high.part.msg_id, NULL, 0);
   346                  return;
   347          }
   348  

regards,
dan carpenter


More information about the Alsa-devel mailing list