lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CACRpkdaHNuuS-2zMwWf-2--8FFV_4aQuAjYx8pLu66h4adQcwQ@mail.gmail.com>
Date:   Thu, 6 Aug 2020 11:41:46 +0200
From:   Linus Walleij <linus.walleij@...aro.org>
To:     Martin DEVERA <devik@...labs.cz>, Peter Rosin <peda@...ntia.se>,
        Neil Armstrong <narmstrong@...libre.com>,
        Andrey Smirnov <andrew.smirnov@...il.com>
Cc:     "open list:GPIO SUBSYSTEM" <linux-gpio@...r.kernel.org>,
        "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Re: pinctrl: sx150x bug

Hi Martin,

thanks for your report, let's check with Peter, Neil and Andrey who also
use this expander if they also see this problem (CC).

On Wed, Aug 5, 2020 at 11:28 AM Martin DEVERA <devik@...labs.cz> wrote:

> I encountered bug in SX1502 expander driver in 5.7.7. Here is relevant
> DTS part:
>
> compatible = "semtech,sx1502q";
> gpio4_cfg_pins: gpio2-cfg {
>                          pins = "gpio5";
>                          output-high;
>      };
>
> And part of OOPS:
>
> [    0.673996] [<c023cfa6>] (gpiochip_get_data) from [<c023b235>]
> (sx150x_gpio_direction_output+0xd)
> [    0.683259] [<c023b235>] (sx150x_gpio_direction_output) from
> [<c023b363>] (sx150x_pinconf_set+0x)
> [    0.692796] [<c023b363>] (sx150x_pinconf_set) from [<c0238fef>]
> (pinconf_apply_setting+0x39/0x7e)
> [    0.701635] [<c0238fef>] (pinconf_apply_setting) from [<c0236c77>]
> (pinctrl_commit_state+0xa5/0x)
> [    0.710648] [<c0236c77>] (pinctrl_commit_state) from [<c0237e03>]
> (pinctrl_enable+0xff/0x1d4)
> [    0.719139] [<c0237e03>] (pinctrl_enable) from [<c023b791>]
> (sx150x_probe+0x1a3/0x358)
> [    0.727027] [<c023b791>] (sx150x_probe) from [<c02c38bf>]
> (i2c_device_probe+0x1bb/0x1dc)
>
> The problem is that sx150x_pinconf_set uses sx150x_gpio_direction_output
> but gpio is not
> setup yet. Patch below fixes it but I'm not sure whether is it correct:
>
> diff --git a/drivers/pinctrl/pinctrl-sx150x.c
> b/drivers/pinctrl/pinctrl-sx150x.c
> index 6e74bd87d959..3f5651edd336 100644
> --- a/drivers/pinctrl/pinctrl-sx150x.c
> +++ b/drivers/pinctrl/pinctrl-sx150x.c
> @@ -1154,12 +1154,6 @@ static int sx150x_probe(struct i2c_client *client,
>                  return ret;
>          }
>
> -       ret = pinctrl_enable(pctl->pctldev);
> -       if (ret) {
> -               dev_err(dev, "Failed to enable pinctrl device\n");
> -               return ret;
> -       }
> -
>          /* Register GPIO controller */
>          pctl->gpio.base = -1;
>          pctl->gpio.ngpio = pctl->data->npins;
> @@ -1191,6 +1185,12 @@ static int sx150x_probe(struct i2c_client *client,
>          if (ret)
>                  return ret;
>
> +       ret = pinctrl_enable(pctl->pctldev);
> +       if (ret) {
> +               dev_err(dev, "Failed to enable pinctrl device\n");
> +               return ret;
> +       }
> +
>          ret = gpiochip_add_pin_range(&pctl->gpio, dev_name(dev),
>                                       0, 0, pctl->data->npins);
>          if (ret)

I don't see any problem with the patch, can you send a proper patch
with git-send-email so we can test it and apply it if it works for the
other users? Include the mentioned people on CC.

Yours,
Linus Walleij

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ