Hi Niklas, Linus, On Tue, Jul 3, 2018 at 5:20 PM Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx> wrote: > The datasheet does not document any registers to control drive strength, > and no drive strength registers are for this reason described for this > SoC. The flags indicating that drive strength can be controlled are > however set for some pins in the driver. > > This leads to a NULL pointer dereference when the sh-pfc core tries to > access the struct describing the drive strength registers, for example > when reading the sysfs file pinconf-pins. > > Fix this by removing the SH_PFC_PIN_CFG_DRIVE_STRENGTH from all pins. > > Fixes: b92ac66a1819602b ("pinctrl: sh-pfc: Add R8A77970 PFC support") > Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx> > Reviewed-by: Simon Horman <horms+renesas@xxxxxxxxxxxx> > Reviewed-by: Sergei Shtylyov <sergei.shtylyov@xxxxxxxxxxxxxxxxxx> > Reviewed-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> > > --- > > * Changes since v1 > - Fix spelling in commit message. > - Add fixes tag. > - Collect review tags. Linus: As this fixes a bug (crash), can you please take this directly, and queue it for v4.18? Thanks! > --- > drivers/pinctrl/sh-pfc/pfc-r8a77970.c | 14 ++++++-------- > 1 file changed, 6 insertions(+), 8 deletions(-) > > diff --git a/drivers/pinctrl/sh-pfc/pfc-r8a77970.c b/drivers/pinctrl/sh-pfc/pfc-r8a77970.c > index b02caf31671186d9..eeb58b3bbc9a0cef 100644 > --- a/drivers/pinctrl/sh-pfc/pfc-r8a77970.c > +++ b/drivers/pinctrl/sh-pfc/pfc-r8a77970.c > @@ -21,15 +21,13 @@ > #include "core.h" > #include "sh_pfc.h" > > -#define CFG_FLAGS SH_PFC_PIN_CFG_DRIVE_STRENGTH > - > #define CPU_ALL_PORT(fn, sfx) \ > - PORT_GP_CFG_22(0, fn, sfx, CFG_FLAGS | SH_PFC_PIN_CFG_IO_VOLTAGE), \ > - PORT_GP_CFG_28(1, fn, sfx, CFG_FLAGS), \ > - PORT_GP_CFG_17(2, fn, sfx, CFG_FLAGS | SH_PFC_PIN_CFG_IO_VOLTAGE), \ > - PORT_GP_CFG_17(3, fn, sfx, CFG_FLAGS | SH_PFC_PIN_CFG_IO_VOLTAGE), \ > - PORT_GP_CFG_6(4, fn, sfx, CFG_FLAGS), \ > - PORT_GP_CFG_15(5, fn, sfx, CFG_FLAGS) > + PORT_GP_CFG_22(0, fn, sfx, SH_PFC_PIN_CFG_IO_VOLTAGE), \ > + PORT_GP_28(1, fn, sfx), \ > + PORT_GP_CFG_17(2, fn, sfx, SH_PFC_PIN_CFG_IO_VOLTAGE), \ > + PORT_GP_CFG_17(3, fn, sfx, SH_PFC_PIN_CFG_IO_VOLTAGE), \ > + PORT_GP_6(4, fn, sfx), \ > + PORT_GP_15(5, fn, sfx) > /* > * F_() : just information > * FM() : macro for FN_xxx / xxx_MARK Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds