diff options
Diffstat (limited to 'drivers/staging/mt7621-gpio')
-rw-r--r-- | drivers/staging/mt7621-gpio/gpio-mt7621.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/staging/mt7621-gpio/gpio-mt7621.c b/drivers/staging/mt7621-gpio/gpio-mt7621.c index 077a7c24df5b..bbe6cce56d90 100644 --- a/drivers/staging/mt7621-gpio/gpio-mt7621.c +++ b/drivers/staging/mt7621-gpio/gpio-mt7621.c @@ -156,17 +156,18 @@ mediatek_gpio_bank_probe(struct platform_device *pdev, struct device_node *bank) { struct mtk_data *gpio_data = dev_get_drvdata(&pdev->dev); const __be32 *id = of_get_property(bank, "reg", NULL); - struct mtk_gc *rg = devm_kzalloc(&pdev->dev, - sizeof(struct mtk_gc), GFP_KERNEL); + struct mtk_gc *rg; int ret; - if (!rg || !id || be32_to_cpu(*id) > MTK_MAX_BANK) + if (!id || be32_to_cpu(*id) >= MTK_MAX_BANK) + return -EINVAL; + + rg = devm_kzalloc(&pdev->dev, sizeof(struct mtk_gc), GFP_KERNEL); + if (!rg) return -ENOMEM; gpio_data->gc_map[be32_to_cpu(*id)] = rg; - memset(rg, 0, sizeof(struct mtk_gc)); - spin_lock_init(&rg->lock); rg->chip.parent = &pdev->dev; |