drivers/staging/sm750fb/sm750.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Make the static fix_id array const-qualified so it can be placed
in read-only memory.
Signed-off-by: Hungyu Lin <dennylin0707@gmail.com>
---
Changes in v3:
- Drop g_fbmode change as it is modified at runtime.
- Resend as a new thread as requested.
---
drivers/staging/sm750fb/sm750.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c
index 9a42a08c8..f7b5b22f1 100644
--- a/drivers/staging/sm750fb/sm750.c
+++ b/drivers/staging/sm750fb/sm750.c
@@ -728,7 +728,7 @@ static int lynxfb_set_fbinfo(struct fb_info *info, int index)
lynx750_ext, NULL, vesa_modes,
};
int cdb[] = {ARRAY_SIZE(lynx750_ext), 0, VESA_MODEDB_SIZE};
- static const char *fix_id[2] = {
+ static const char * const fix_id[2] = {
"sm750_fb1", "sm750_fb2",
};
--
2.34.1
On Wed, Apr 01, 2026 at 11:03:33AM +0000, Hungyu Lin wrote:
> Make the static fix_id array const-qualified so it can be placed
> in read-only memory.
>
> Signed-off-by: Hungyu Lin <dennylin0707@gmail.com>
>
> ---
> Changes in v3:
> - Drop g_fbmode change as it is modified at runtime.
> - Resend as a new thread as requested.
> ---
> drivers/staging/sm750fb/sm750.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c
> index 9a42a08c8..f7b5b22f1 100644
> --- a/drivers/staging/sm750fb/sm750.c
> +++ b/drivers/staging/sm750fb/sm750.c
> @@ -728,7 +728,7 @@ static int lynxfb_set_fbinfo(struct fb_info *info, int index)
> lynx750_ext, NULL, vesa_modes,
> };
> int cdb[] = {ARRAY_SIZE(lynx750_ext), 0, VESA_MODEDB_SIZE};
> - static const char *fix_id[2] = {
> + static const char * const fix_id[2] = {
Wait, is this really right?
You have a const char * array, and now you make the pointer to that
const char * array const as well? But that was static already, so what
exactly just got moved to read only memory? What does the compiler do
differently here? How was this tested?
I need a bit more "proof" that this change really is correct as the
const * and * to const and static stuff here always is confusing. There
used to be some tool that would "unwind" this to figure it all out, but
I can't find that at the moment...
thanks,
greg k-h
On Wed, Apr 01, 2026 at 01:18:15PM +0200, Greg Kroah-Hartman wrote:
> On Wed, Apr 01, 2026 at 11:03:33AM +0000, Hungyu Lin wrote:
> > Make the static fix_id array const-qualified so it can be placed
> > in read-only memory.
> >
> > Signed-off-by: Hungyu Lin <dennylin0707@gmail.com>
> >
> > ---
> > Changes in v3:
> > - Drop g_fbmode change as it is modified at runtime.
> > - Resend as a new thread as requested.
> > ---
> > drivers/staging/sm750fb/sm750.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c
> > index 9a42a08c8..f7b5b22f1 100644
> > --- a/drivers/staging/sm750fb/sm750.c
> > +++ b/drivers/staging/sm750fb/sm750.c
> > @@ -728,7 +728,7 @@ static int lynxfb_set_fbinfo(struct fb_info *info, int index)
> > lynx750_ext, NULL, vesa_modes,
> > };
> > int cdb[] = {ARRAY_SIZE(lynx750_ext), 0, VESA_MODEDB_SIZE};
> > - static const char *fix_id[2] = {
> > + static const char * const fix_id[2] = {
>
> Wait, is this really right?
>
> You have a const char * array, and now you make the pointer to that
> const char * array const as well? But that was static already, so what
> exactly just got moved to read only memory? What does the compiler do
> differently here? How was this tested?
>
> I need a bit more "proof" that this change really is correct as the
> const * and * to const and static stuff here always is confusing. There
> used to be some tool that would "unwind" this to figure it all out, but
> I can't find that at the moment...
Ah, found it:
https://cdecl.org/
So:
const char * fix_id[2]
is:
declare fix_id as array 2 of pointer to const char
and:
const char * const fix_id[2]
is:
declare fix_id as array 2 of const pointer to const char
so I think that's right and your patch is ok?
But clarifiying what exactly got moved from where into where, would be
good to have done. Please look at the output of the compiler for proof
of that and put that in the changelog text for the next version.
thanks,
greg k-h
© 2016 - 2026 Red Hat, Inc.