lkml.org 
[lkml]   [2018]   [Mar]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [PATCH v3 3/3] pinctrl: qcom: Don't allow protected pins to be requested
Date
Quoting Andy Shevchenko (2018-03-23 04:36:04)
> On Thu, 2018-03-22 at 19:16 -0500, Timur Tabi wrote:
> > On 03/21/2018 11:58 AM, Stephen Boyd wrote:
> > > +static int msm_gpio_init_valid_mask(struct gpio_chip *chip,
> > > + struct msm_pinctrl *pctrl)
> > > +{
> > > + int ret;
> > > + unsigned int len, i;
> > > + unsigned int max_gpios = pctrl->soc->ngpios;
> > > +
> > > + /* The number of GPIOs in the ACPI tables */
> > > + ret = device_property_read_u16_array(pctrl->dev, "gpios",
> > > NULL, 0);
> > > + if (ret > 0 && ret < max_gpios) {
> >
> > This needs to be ret <= max_gpios, otherwise it will fail if every
> > GPIO
> > is available.
> >
> > And it should print an error message and return an error code if ret
> > >
> > max_gpios.
>
> Perhaps makes sense to do the opposite condition
>
> if (ret < 0 || ret > max_gpios) {
> ... error handling ...
> }
>

Indeed. I already rewrote it like this two days ago:

static int msm_gpio_init_valid_mask(struct gpio_chip *chip,
struct msm_pinctrl *pctrl)
{
int ret;
unsigned int len, i;
unsigned int max_gpios = pctrl->soc->ngpios;
u16 *tmp;

/* The number of GPIOs in the ACPI tables */
len = ret = device_property_read_u16_array(pctrl->dev, "gpios",
ULL, 0);
if (ret < 0)
return 0;

if (ret > max_gpios)
return -EINVAL;

tmp = kmalloc_array(len, sizeof(*tmp), GFP_KERNEL);
if (!tmp)
return -ENOMEM;

ret = device_property_read_u16_array(pctrl->dev, "gpios", tmp,
en);
if (ret < 0) {
dev_err(pctrl->dev, "could not read list of GPIOs\n");
goto out;
}

bitmap_zero(chip->valid_mask, max_gpios);
for (i = 0; i < len; i++)
set_bit(tmp[i], chip->valid_mask);

out:
kfree(tmp);
return ret;
}

I'll send the updated patches now.

\
 
 \ /
  Last update: 2018-03-23 17:22    [W:0.212 / U:0.132 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site