ASoC: cs42l43: Check error from device_property_read_u32_array()
authorCharles Keepax <ckeepax@opensource.cirrus.com>
Thu, 25 Jan 2024 10:31:13 +0000 (10:31 +0000)
committerMark Brown <broonie@kernel.org>
Fri, 26 Jan 2024 14:46:56 +0000 (14:46 +0000)
Whilst reading cirrus,buttons-ohms the error from
device_property_read_u32_array() is not checked, whilst there is a
preceding device_property_count_u32() which is checked the property
read can still fail. Add the missing check.

Suggested-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://msgid.link/r/20240125103117.2622095-3-ckeepax@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/cs42l43-jack.c

index 4f7a405b7e06a267dd9edbe37e9da5b5e581e199..67ccdc8bab6f6e31d4cf7fdf66d0cdb4c97416b6 100644 (file)
@@ -106,8 +106,13 @@ int cs42l43_set_jack(struct snd_soc_component *component,
                        goto error;
                }
 
-               device_property_read_u32_array(cs42l43->dev, "cirrus,buttons-ohms",
-                                              priv->buttons, ret);
+               ret = device_property_read_u32_array(cs42l43->dev, "cirrus,buttons-ohms",
+                                                    priv->buttons, ret);
+               if (ret < 0) {
+                       dev_err(priv->dev, "Property cirrus,button-ohms malformed: %d\n",
+                               ret);
+                       goto error;
+               }
        } else {
                priv->buttons[0] = 70;
                priv->buttons[1] = 185;