mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
pinctrl: qcom: qdf2xxx: improve error checking and reporting
The driver doesn't report an error message if the ACPI tables are missing the num-gpios property (which indicates how many GPIOs there are on this SOC), and it didn't check to ensure that the mallocs didn't fail. Signed-off-by: Timur Tabi <timur@codeaurora.org> Reviewed-by: Björn Andersson <bjorn.andersson@sonymobile.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
57b588c950
commit
beee39099b
1 changed files with 12 additions and 4 deletions
|
@ -32,6 +32,9 @@
|
|||
|
||||
static struct msm_pinctrl_soc_data qdf2xxx_pinctrl;
|
||||
|
||||
/* A reasonable limit to the number of GPIOS */
|
||||
#define MAX_GPIOS 256
|
||||
|
||||
static int qdf2xxx_pinctrl_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct pinctrl_pin_desc *pins;
|
||||
|
@ -42,11 +45,13 @@ static int qdf2xxx_pinctrl_probe(struct platform_device *pdev)
|
|||
|
||||
/* Query the number of GPIOs from ACPI */
|
||||
ret = device_property_read_u32(&pdev->dev, "num-gpios", &num_gpios);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
if (!num_gpios) {
|
||||
if (ret < 0) {
|
||||
dev_warn(&pdev->dev, "missing num-gpios property\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (!num_gpios || num_gpios > MAX_GPIOS) {
|
||||
dev_warn(&pdev->dev, "invalid num-gpios property\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
|
@ -55,6 +60,9 @@ static int qdf2xxx_pinctrl_probe(struct platform_device *pdev)
|
|||
groups = devm_kcalloc(&pdev->dev, num_gpios,
|
||||
sizeof(struct msm_pingroup), GFP_KERNEL);
|
||||
|
||||
if (!pins || !groups)
|
||||
return -ENOMEM;
|
||||
|
||||
for (i = 0; i < num_gpios; i++) {
|
||||
pins[i].number = i;
|
||||
|
||||
|
|
Loading…
Reference in a new issue