OSDN Git Service

ASoC: soc-core: remove always-false path
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Thu, 21 Apr 2022 16:25:05 +0000 (11:25 -0500)
committerMark Brown <broonie@kernel.org>
Fri, 22 Apr 2022 23:16:28 +0000 (00:16 +0100)
cppcheck throws the following warning:

sound/soc/soc-core.c:2773:6: style: Condition '!num_widgets' is always
false [knownConditionTrueFalse]
 if (!num_widgets) {
     ^

sound/soc/soc-core.c:2761:18: note: Assuming that condition
'num_widgets<0' is not redundant
 if (num_widgets < 0) {
                 ^
sound/soc/soc-core.c:2766:18: note: Assuming condition is false
 if (num_widgets & 1) {
                 ^
sound/soc/soc-core.c:2772:2: note: Compound assignment '/=', assigned
value is 0
 num_widgets /= 2;
 ^

We should check upfront all error conditions.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Rander Wang <rander.wang@intel.com>
Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20220421162505.302132-1-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-core.c

index aa687fd..d68e64b 100644 (file)
@@ -2763,6 +2763,11 @@ int snd_soc_of_parse_audio_simple_widgets(struct snd_soc_card *card,
                        "ASoC: Property '%s' does not exist\n", propname);
                return -EINVAL;
        }
+       if (!num_widgets) {
+               dev_err(card->dev, "ASoC: Property '%s's length is zero\n",
+                       propname);
+               return -EINVAL;
+       }
        if (num_widgets & 1) {
                dev_err(card->dev,
                        "ASoC: Property '%s' length is not even\n", propname);
@@ -2770,11 +2775,6 @@ int snd_soc_of_parse_audio_simple_widgets(struct snd_soc_card *card,
        }
 
        num_widgets /= 2;
-       if (!num_widgets) {
-               dev_err(card->dev, "ASoC: Property '%s's length is zero\n",
-                       propname);
-               return -EINVAL;
-       }
 
        widgets = devm_kcalloc(card->dev, num_widgets, sizeof(*widgets),
                               GFP_KERNEL);