Message ID | 20180310001021.6437-4-labbott@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 10/03/18 02:10, Laura Abbott wrote: > > The new challenge is to remove VLAs from the kernel > (see https://lkml.org/lkml/2018/3/7/621) > > This patch replaces a VLA with an appropriate call to kmalloc_array. > > Signed-off-by: Laura Abbott <labbott@redhat.com> > --- This looks good to me. Reviewed-by: Nandor Han <nandor.han@ge.com> Nandor > drivers/gpio/gpio-xra1403.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpio/gpio-xra1403.c b/drivers/gpio/gpio-xra1403.c > index 0230e4b7a2fb..8d4c8e99b251 100644 > --- a/drivers/gpio/gpio-xra1403.c > +++ b/drivers/gpio/gpio-xra1403.c > @@ -126,11 +126,16 @@ static void xra1403_dbg_show(struct seq_file *s, struct gpio_chip *chip) > { > int reg; > struct xra1403 *xra = gpiochip_get_data(chip); > - int value[xra1403_regmap_cfg.max_register]; > + int *value; > int i; > unsigned int gcr; > unsigned int gsr; > > + value = kmalloc_array(xra1403_regmap_cfg.max_register, sizeof(*value), > + GFP_KERNEL); > + if (!value) > + return; > + > seq_puts(s, "xra reg:"); > for (reg = 0; reg <= xra1403_regmap_cfg.max_register; reg++) > seq_printf(s, " %2.2x", reg); > @@ -154,6 +159,7 @@ static void xra1403_dbg_show(struct seq_file *s, struct gpio_chip *chip) > (gcr & BIT(i)) ? "in" : "out", > (gsr & BIT(i)) ? "hi" : "lo"); > } > + kfree(value); > } > #else > #define xra1403_dbg_show NULL >
On Sat, Mar 10, 2018 at 1:10 AM, Laura Abbott <labbott@redhat.com> wrote: > The new challenge is to remove VLAs from the kernel > (see https://lkml.org/lkml/2018/3/7/621) > > This patch replaces a VLA with an appropriate call to kmalloc_array. > > Signed-off-by: Laura Abbott <labbott@redhat.com> Patch applied with Nandor's review tag. Yours, Linus Walleij
Hi Laura, On Sat, Mar 10, 2018 at 1:10 AM, Laura Abbott <labbott@redhat.com> wrote: > The new challenge is to remove VLAs from the kernel > (see https://lkml.org/lkml/2018/3/7/621) > > This patch replaces a VLA with an appropriate call to kmalloc_array. > > Signed-off-by: Laura Abbott <labbott@redhat.com> Thanks for your patch! > --- a/drivers/gpio/gpio-xra1403.c > +++ b/drivers/gpio/gpio-xra1403.c > @@ -126,11 +126,16 @@ static void xra1403_dbg_show(struct seq_file *s, struct gpio_chip *chip) > { > int reg; > struct xra1403 *xra = gpiochip_get_data(chip); > - int value[xra1403_regmap_cfg.max_register]; Apparently xra1403_regmap_cfg.max_register is always 0x15? What about adding #define XRA_LAST 15 at the top, and replacing both "XRA_IFR | 0x01" and xra1403_regmap_cfg.max_register by XRA_LAST instead? That would avoid doing yet another memory allocation over and over. Gr{oetje,eeting}s, Geert
On 03/28/2018 12:27 AM, Geert Uytterhoeven wrote: > Hi Laura, > > On Sat, Mar 10, 2018 at 1:10 AM, Laura Abbott <labbott@redhat.com> wrote: >> The new challenge is to remove VLAs from the kernel >> (see https://lkml.org/lkml/2018/3/7/621) >> >> This patch replaces a VLA with an appropriate call to kmalloc_array. >> >> Signed-off-by: Laura Abbott <labbott@redhat.com> > > Thanks for your patch! > >> --- a/drivers/gpio/gpio-xra1403.c >> +++ b/drivers/gpio/gpio-xra1403.c >> @@ -126,11 +126,16 @@ static void xra1403_dbg_show(struct seq_file *s, struct gpio_chip *chip) >> { >> int reg; >> struct xra1403 *xra = gpiochip_get_data(chip); >> - int value[xra1403_regmap_cfg.max_register]; > > Apparently xra1403_regmap_cfg.max_register is always 0x15? > > What about adding > > #define XRA_LAST 15 > > at the top, and replacing both "XRA_IFR | 0x01" and > xra1403_regmap_cfg.max_register by XRA_LAST instead? > That would avoid doing yet another memory allocation over and over. > > Gr{oetje,eeting}s, > > Geert > I'm okay with making the change but I think Linus already picked up the patch into his gpio trees. Linus, do you want a patch on top of your -devel branch or should I just send a new patch? Thanks, Laura
On Wed, Mar 28, 2018 at 7:27 PM, Laura Abbott <labbott@redhat.com> wrote: > On 03/28/2018 12:27 AM, Geert Uytterhoeven wrote: >> >> Hi Laura, >> >> On Sat, Mar 10, 2018 at 1:10 AM, Laura Abbott <labbott@redhat.com> wrote: >>> >>> The new challenge is to remove VLAs from the kernel >>> (see https://lkml.org/lkml/2018/3/7/621) >>> >>> This patch replaces a VLA with an appropriate call to kmalloc_array. >>> >>> Signed-off-by: Laura Abbott <labbott@redhat.com> >> >> >> Thanks for your patch! >> >>> --- a/drivers/gpio/gpio-xra1403.c >>> +++ b/drivers/gpio/gpio-xra1403.c >>> @@ -126,11 +126,16 @@ static void xra1403_dbg_show(struct seq_file *s, >>> struct gpio_chip *chip) >>> { >>> int reg; >>> struct xra1403 *xra = gpiochip_get_data(chip); >>> - int value[xra1403_regmap_cfg.max_register]; >> >> >> Apparently xra1403_regmap_cfg.max_register is always 0x15? >> >> What about adding >> >> #define XRA_LAST 15 >> >> at the top, and replacing both "XRA_IFR | 0x01" and >> xra1403_regmap_cfg.max_register by XRA_LAST instead? >> That would avoid doing yet another memory allocation over and over. >> >> Gr{oetje,eeting}s, >> >> Geert >> > > I'm okay with making the change but I think Linus already picked > up the patch into his gpio trees. Linus, do you want a patch on > top of your -devel branch or should I just send a new patch? Yeah a patch on top is fine, I sent my pull request to Torvalds today so we can take this as a fix for the -rc cycle simply. Yours, Linus Walleij
diff --git a/drivers/gpio/gpio-xra1403.c b/drivers/gpio/gpio-xra1403.c index 0230e4b7a2fb..8d4c8e99b251 100644 --- a/drivers/gpio/gpio-xra1403.c +++ b/drivers/gpio/gpio-xra1403.c @@ -126,11 +126,16 @@ static void xra1403_dbg_show(struct seq_file *s, struct gpio_chip *chip) { int reg; struct xra1403 *xra = gpiochip_get_data(chip); - int value[xra1403_regmap_cfg.max_register]; + int *value; int i; unsigned int gcr; unsigned int gsr; + value = kmalloc_array(xra1403_regmap_cfg.max_register, sizeof(*value), + GFP_KERNEL); + if (!value) + return; + seq_puts(s, "xra reg:"); for (reg = 0; reg <= xra1403_regmap_cfg.max_register; reg++) seq_printf(s, " %2.2x", reg); @@ -154,6 +159,7 @@ static void xra1403_dbg_show(struct seq_file *s, struct gpio_chip *chip) (gcr & BIT(i)) ? "in" : "out", (gsr & BIT(i)) ? "hi" : "lo"); } + kfree(value); } #else #define xra1403_dbg_show NULL
The new challenge is to remove VLAs from the kernel (see https://lkml.org/lkml/2018/3/7/621) This patch replaces a VLA with an appropriate call to kmalloc_array. Signed-off-by: Laura Abbott <labbott@redhat.com> --- drivers/gpio/gpio-xra1403.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)