| Date | Wed, 31 Jul 2019 20:19:23 +0200 | From | Pavel Machek <> | Subject | Re: [PATCH 4.19 038/113] serial: mctrl_gpio: Check if GPIO property exisits before requesting it |
| |
Hi!
> This patch implements the fix suggested by Mika in his statement above.
> @@ -12,6 +12,7 @@ > #include <linux/termios.h> > #include <linux/serial_core.h> > #include <linux/module.h> > +#include <linux/property.h> > > #include "serial_mctrl_gpio.h" > > @@ -115,6 +116,19 @@ struct mctrl_gpios *mctrl_gpio_init_noauto(struct device *dev, unsigned int idx) > > for (i = 0; i < UART_GPIO_MAX; i++) { > enum gpiod_flags flags; > + char *gpio_str; > + bool present; > + > + /* Check if GPIO property exists and continue if not */ > + gpio_str = kasprintf(GFP_KERNEL, "%s-gpios", > + mctrl_gpios_desc[i].name); > + if (!gpio_str) > + continue;
So if this fails, we'll let the system boot in different configuration than usual. I guess GFP_KERNEL allocation failures are really rare, but would it be worth a message? Or maybe buffer on the stack so we don't do allocations in a loop, and so that allocation can't fail?
Thanks, Pavel
> + present = device_property_present(dev, gpio_str); > + kfree(gpio_str); > + if (!present) > + continue; > > if (mctrl_gpios_desc[i].dir_out) > flags = GPIOD_OUT_LOW;
-- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany [unhandled content-type:application/pgp-signature] |