lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 270/563] ASoC: rt5663: Handle device_property_read_u32_array error codes
    Date
    From: Jiasheng Jiang <jiasheng@iscas.ac.cn>

    [ Upstream commit 2167c0b205960607fb136b4bb3c556a62be1569a ]

    The return value of device_property_read_u32_array() is not always 0.
    To catch the exception in case that devm_kzalloc failed and the
    rt5663->imp_table was NULL, which caused the failure of
    device_property_read_u32_array.

    Fixes: 450f0f6a8fb4 ("ASoC: rt5663: Add the manual offset field to compensate the DC offset")
    Signed-off-by: Jiasheng Jiang <jiasheng@iscas.ac.cn>
    Link: https://lore.kernel.org/r/20211215031550.70702-1-jiasheng@iscas.ac.cn
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    sound/soc/codecs/rt5663.c | 12 +++++++++---
    1 file changed, 9 insertions(+), 3 deletions(-)

    diff --git a/sound/soc/codecs/rt5663.c b/sound/soc/codecs/rt5663.c
    index 619fb9a031e39..db8a41aaa3859 100644
    --- a/sound/soc/codecs/rt5663.c
    +++ b/sound/soc/codecs/rt5663.c
    @@ -3461,6 +3461,7 @@ static void rt5663_calibrate(struct rt5663_priv *rt5663)
    static int rt5663_parse_dp(struct rt5663_priv *rt5663, struct device *dev)
    {
    int table_size;
    + int ret;

    device_property_read_u32(dev, "realtek,dc_offset_l_manual",
    &rt5663->pdata.dc_offset_l_manual);
    @@ -3477,9 +3478,11 @@ static int rt5663_parse_dp(struct rt5663_priv *rt5663, struct device *dev)
    table_size = sizeof(struct impedance_mapping_table) *
    rt5663->pdata.impedance_sensing_num;
    rt5663->imp_table = devm_kzalloc(dev, table_size, GFP_KERNEL);
    - device_property_read_u32_array(dev,
    + ret = device_property_read_u32_array(dev,
    "realtek,impedance_sensing_table",
    (u32 *)rt5663->imp_table, table_size);
    + if (ret)
    + return ret;
    }

    return 0;
    @@ -3504,8 +3507,11 @@ static int rt5663_i2c_probe(struct i2c_client *i2c,

    if (pdata)
    rt5663->pdata = *pdata;
    - else
    - rt5663_parse_dp(rt5663, &i2c->dev);
    + else {
    + ret = rt5663_parse_dp(rt5663, &i2c->dev);
    + if (ret)
    + return ret;
    + }

    for (i = 0; i < ARRAY_SIZE(rt5663->supplies); i++)
    rt5663->supplies[i].supply = rt5663_supply_names[i];
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-24 21:14    [W:2.243 / U:0.204 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site