[PATCH v3] staging: sm750fb: constify fix_id array

Hungyu Lin posted 1 patch 7 hours ago
There is a newer version of this series
drivers/staging/sm750fb/sm750.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH v3] staging: sm750fb: constify fix_id array
Posted by Hungyu Lin 7 hours ago
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
Re: [PATCH v3] staging: sm750fb: constify fix_id array
Posted by Greg Kroah-Hartman 7 hours ago
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
Re: [PATCH v3] staging: sm750fb: constify fix_id array
Posted by Greg Kroah-Hartman 7 hours ago
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
Re: [PATCH v3] staging: sm750fb: constify fix_id array
Posted by Denny Lin 6 hours ago
Hi Greg,

Thanks for the clarification.

I've addressed this in v4 by clarifying the const semantics and adding
'nm' output showing the symbol is placed in a read-only section.

Thanks,
Hungyu