}
 
        range = pinctrl_find_gpio_range_from_pin(pctldev, g->pin);
+       if (!range) {
+               dev_err(pctl->dev, "No gpio range defined.\n");
+               return -EINVAL;
+       }
+
        bank = gpiochip_get_data(range->gc);
        pin = stm32_gpio_pin(g->pin);
 
                unsigned int pin, enum pin_config_param param,
                enum pin_config_param arg)
 {
+       struct stm32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
        struct pinctrl_gpio_range *range;
        struct stm32_gpio_bank *bank;
        int offset, ret = 0;
 
        range = pinctrl_find_gpio_range_from_pin(pctldev, pin);
+       if (!range) {
+               dev_err(pctl->dev, "No gpio range defined.\n");
+               return -EINVAL;
+       }
+
        bank = gpiochip_get_data(range->gc);
        offset = stm32_gpio_pin(pin);
 
        bool val;
 
        range = pinctrl_find_gpio_range_from_pin_nolock(pctldev, pin);
+       if (!range)
+               return;
+
        bank = gpiochip_get_data(range->gc);
        offset = stm32_gpio_pin(pin);
 
                return PTR_ERR(pctl->pctl_dev);
        }
 
-       for_each_child_of_node(np, child)
+       for_each_available_child_of_node(np, child)
                if (of_property_read_bool(child, "gpio-controller"))
                        banks++;
 
        if (!pctl->banks)
                return -ENOMEM;
 
-       for_each_child_of_node(np, child) {
+       for_each_available_child_of_node(np, child) {
                if (of_property_read_bool(child, "gpio-controller")) {
                        ret = stm32_gpiolib_register_bank(pctl, child);
                        if (ret)