Commit 4e13eb72 authored by Nicolin Chen's avatar Nicolin Chen Committed by Mark Brown

ASoC: fsl_asrc: Don't access members of config before checking it

sound/soc/fsl/fsl_asrc.c:250 fsl_asrc_config_pair()
	warn: variable dereferenced before check 'config' (see line 243)

git remote add next git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
git remote update next
git checkout 3117bb31
vim +/config +250 sound/soc/fsl/fsl_asrc.c

  237   */
  238  static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair)
  239  {
  240   struct asrc_config *config = pair->config;
  241   struct fsl_asrc *asrc_priv = pair->asrc_priv;
  242   enum asrc_pair_index index = pair->index;
 @243   u32 inrate = config->input_sample_rate, indiv;
  244   u32 outrate = config->output_sample_rate, outdiv;
  245   bool ideal = config->inclk == INCLK_NONE;
  246   u32 clk_index[2], div[2];
  247   int in, out, channels;
  248   struct clk *clk;
  249
 @250   if (!config) {
  251           pair_err("invalid pair config\n");
  252           return -EINVAL;
  253   }
Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarNicolin Chen <nicoleotsuka@gmail.com>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent 6ccf62c7
...@@ -240,12 +240,11 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair) ...@@ -240,12 +240,11 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair)
struct asrc_config *config = pair->config; struct asrc_config *config = pair->config;
struct fsl_asrc *asrc_priv = pair->asrc_priv; struct fsl_asrc *asrc_priv = pair->asrc_priv;
enum asrc_pair_index index = pair->index; enum asrc_pair_index index = pair->index;
u32 inrate = config->input_sample_rate, indiv; u32 inrate, outrate, indiv, outdiv;
u32 outrate = config->output_sample_rate, outdiv;
bool ideal = config->inclk == INCLK_NONE;
u32 clk_index[2], div[2]; u32 clk_index[2], div[2];
int in, out, channels; int in, out, channels;
struct clk *clk; struct clk *clk;
bool ideal;
if (!config) { if (!config) {
pair_err("invalid pair config\n"); pair_err("invalid pair config\n");
...@@ -264,6 +263,10 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair) ...@@ -264,6 +263,10 @@ static int fsl_asrc_config_pair(struct fsl_asrc_pair *pair)
return -EINVAL; return -EINVAL;
} }
inrate = config->input_sample_rate;
outrate = config->output_sample_rate;
ideal = config->inclk == INCLK_NONE;
/* Validate input and output sample rates */ /* Validate input and output sample rates */
for (in = 0; in < ARRAY_SIZE(supported_input_rate); in++) for (in = 0; in < ARRAY_SIZE(supported_input_rate); in++)
if (inrate == supported_input_rate[in]) if (inrate == supported_input_rate[in])
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment