ASoC: tlv320aic31xx: Do not ignore errors in aic31xx_device_init()
We need to return the error codes from aic31xx_device_init() and return from the i2c_probe with the error code. We will have kernel panic (NULL pointer dereference) in regulator_register_notifier() in case the devm_regulator_bulk_get() fails (with -EPROBE_DEFER for example). Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Signed-off-by: Mark Brown <broonie@linaro.org> Cc: stable@vger.kernel.org
This commit is contained in:
parent
7171511eae
commit
a72d2abbe5
1 changed files with 6 additions and 3 deletions
|
@ -1178,7 +1178,7 @@ static void aic31xx_pdata_from_of(struct aic31xx_priv *aic31xx)
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_OF */
|
#endif /* CONFIG_OF */
|
||||||
|
|
||||||
static void aic31xx_device_init(struct aic31xx_priv *aic31xx)
|
static int aic31xx_device_init(struct aic31xx_priv *aic31xx)
|
||||||
{
|
{
|
||||||
int ret, i;
|
int ret, i;
|
||||||
|
|
||||||
|
@ -1197,7 +1197,7 @@ static void aic31xx_device_init(struct aic31xx_priv *aic31xx)
|
||||||
"aic31xx-reset-pin");
|
"aic31xx-reset-pin");
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
dev_err(aic31xx->dev, "not able to acquire gpio\n");
|
dev_err(aic31xx->dev, "not able to acquire gpio\n");
|
||||||
return;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1210,6 +1210,7 @@ static void aic31xx_device_init(struct aic31xx_priv *aic31xx)
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
dev_err(aic31xx->dev, "Failed to request supplies: %d\n", ret);
|
dev_err(aic31xx->dev, "Failed to request supplies: %d\n", ret);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int aic31xx_i2c_probe(struct i2c_client *i2c,
|
static int aic31xx_i2c_probe(struct i2c_client *i2c,
|
||||||
|
@ -1239,7 +1240,9 @@ static int aic31xx_i2c_probe(struct i2c_client *i2c,
|
||||||
|
|
||||||
aic31xx->pdata.codec_type = id->driver_data;
|
aic31xx->pdata.codec_type = id->driver_data;
|
||||||
|
|
||||||
aic31xx_device_init(aic31xx);
|
ret = aic31xx_device_init(aic31xx);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
return snd_soc_register_codec(&i2c->dev, &soc_codec_driver_aic31xx,
|
return snd_soc_register_codec(&i2c->dev, &soc_codec_driver_aic31xx,
|
||||||
aic31xx_dai_driver,
|
aic31xx_dai_driver,
|
||||||
|
|
Loading…
Add table
Reference in a new issue