[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAMuHMdVDr19p3GtR4n_hJAtc_RX+VJwVfU1Mzvtka9er+WS8bg@mail.gmail.com>
Date: Mon, 6 Mar 2023 17:13:34 +0100
From: Geert Uytterhoeven <geert@...ux-m68k.org>
To: Thomas Zimmermann <tzimmermann@...e.de>
Cc: deller@....de, paulus@...ba.org, benh@...nel.crashing.org,
linux@...linux.org.uk, pjones@...hat.com, timur@...nel.org,
adaplas@...il.com, s.hauer@...gutronix.de, shawnguo@...nel.org,
mbroemme@...mpq.org, thomas@...ischhofer.net,
James.Bottomley@...senpartnership.com, spock@...too.org,
sudipm.mukherjee@...il.com, teddy.wang@...iconmotion.com,
geert+renesas@...der.be, corbet@....net,
linux-fbdev@...r.kernel.org, dri-devel@...ts.freedesktop.org,
linux-kernel@...r.kernel.org
Subject: Re: [PATCH 11/99] fbdev/aty: Duplicate video-mode option string
Hi Thomas,
Thanks for your patch!
On Mon, Mar 6, 2023 at 5:00 PM Thomas Zimmermann <tzimmermann@...e.de> wrote:
> Assume that the driver does not own the option string or its substrings
> and hence duplicate the option string for the video mode. The driver only
> parses the option string once as part of module initialization, so use
> a static buffer to store the duplicated mode option. Linux automatically
> frees the memory upon releasing the module.
Are you sure about that?
All of this code is inside "#ifndef MODULE".
In the aty128fb case, the function is not marked __init.
Enabling these 3 drivers adds 3x256 bytes of static buffer, more
if you enable more fbdev drivers.
> Done in preparation of switching the driver to struct option_iter and
> constifying the option string.
>
> Signed-off-by: Thomas Zimmermann <tzimmermann@...e.de>
> --- a/drivers/video/fbdev/aty/aty128fb.c
> +++ b/drivers/video/fbdev/aty/aty128fb.c
> @@ -1723,7 +1723,17 @@ static int aty128fb_setup(char *options)
> continue;
> }
> #endif /* CONFIG_PPC_PMAC */
> - mode_option = this_opt;
> + {
> + static char mode_option_buf[256];
> + int ret;
> +
> + ret = snprintf(mode_option_buf, sizeof(mode_option_buf), "%s", this_opt);
> + if (WARN(ret < 0, "aty128: ignoring invalid option, ret=%d\n", ret))
> + continue;
> + if (WARN(ret >= sizeof(mode_option_buf), "aty128fb: option too long\n"))
> + continue;
> + mode_option = mode_option_buf;
> + }
> }
> return 0;
> }
eturn 0;
> }
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@...ux-m68k.org
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
Powered by blists - more mailing lists