[PATCH] pinctrl: pinctrl-imx: don't use invalid value of conf_reg

Linus Walleij linus.walleij at linaro.org
Thu Feb 5 05:53:34 PST 2015


On Tue, Feb 3, 2015 at 8:01 PM, Uwe Kleine-König
<u.kleine-koenig at pengutronix.de> wrote:
> On Tue, Feb 03, 2015 at 02:01:09PM +0100, Linus Walleij wrote:
>> On Tue, Jan 27, 2015 at 11:50 PM, Uwe Kleine-König
>> <u.kleine-koenig at pengutronix.de> wrote:
>>
>> > The right check for conf_reg to be invalid it testing against -1 not 0
>> > as is done in the rest of the driver.
>> >
>> > This fixes an oops that can be triggered by:
>> >
>> >         cat /sys/kernel/debug/pinctrl/43fac000.iomuxc/*
>> >
>> > Fixes: ae75ff814538 ("pinctrl: pinctrl-imx: add imx pinctrl core driver")
>> > Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
>>
>> Patch applied.
>>
>> But...
>>
>> > -       if (!pin_reg || !pin_reg->conf_reg) {
>> > +       if (!pin_reg || pin_reg->conf_reg == -1) {
>>
>> I can see that the other code checks for -1 in this variable.
>> But where is conf_reg ever set to -1?
>>
>> freescale]$ git grep "\-1"
>> pinctrl-imx.c:          if (pin_reg->mux_reg == -1) {
>> pinctrl-imx.c:  if (pin_reg->mux_reg == -1)
>> pinctrl-imx.c:  if (pin_reg->mux_reg == -1)
>> pinctrl-imx.c:  if (pin_reg->conf_reg == -1) {
>> pinctrl-imx.c:  if (pin_reg->conf_reg == -1) {
>> pinctrl-imx.c:  if (!pin_reg || pin_reg->conf_reg == -1) {
> Uah, ugly. This member gets -1 by means of:
>
>         memset(info->pin_regs, 0xff, sizeof(*info->pin_regs) * info->npins);

OMG. Uwe can you make a patch changing that initialization
code to something sane? We can't have it like this.

Yours,
Linus Walleij



More information about the linux-arm-kernel mailing list