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
|
@ -1178,7 +1178,7 @@ static void aic31xx_pdata_from_of(struct aic31xx_priv *aic31xx)
|
|||
}
|
||||
#endif /* CONFIG_OF */
|
||||
|
||||
static void aic31xx_device_init(struct aic31xx_priv *aic31xx)
|
||||
static int aic31xx_device_init(struct aic31xx_priv *aic31xx)
|
||||
{
|
||||
int ret, i;
|
||||
|
||||
|
@ -1197,7 +1197,7 @@ static void aic31xx_device_init(struct aic31xx_priv *aic31xx)
|
|||
"aic31xx-reset-pin");
|
||||
if (ret < 0) {
|
||||
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)
|
||||
dev_err(aic31xx->dev, "Failed to request supplies: %d\n", ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
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_device_init(aic31xx);
|
||||
ret = aic31xx_device_init(aic31xx);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
return snd_soc_register_codec(&i2c->dev, &soc_codec_driver_aic31xx,
|
||||
aic31xx_dai_driver,
|
||||
|
|
Loading…
Reference in New Issue