Re: [PATCH v2] video: fbdev: via: refactor strcpy and viafb_name

[email protected]
Newsgroups org.freedesktop.lists.dri-devel
Message-ID <[email protected]>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Critical] Changing the driver identification string exposed in the fb_fix_screeninfo structure from "Via" to "viafb" breaks userspace ABI backward compatibility.
--

--- Patch [1]: [PATCH v2] video: fbdev: via: refactor strcpy and viafb_name ---
commit 31193988a75e693bb97d9723171d248ff11a2f17
Author: Ajith P V <[email protected]>

video: fbdev: via: refactor strcpy and viafb_name

This commit replaces unbounded strcpy() calls with strscpy() to harden the
framebuffer screen info initialization. It also converts the viafb_name
pointer into a static const char array and changes its string value.

Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#strcpy [1]
Link: https://github.com/KSPP/linux/issues/88 [2]

> diff --git a/drivers/video/fbdev/via/viafbdev.c b/drivers/video/fbdev/via/viafbdev.c
> index 80f95dac32c8c..b3a2e07b61a7c 100644
> --- a/drivers/video/fbdev/via/viafbdev.c
> +++ b/drivers/video/fbdev/via/viafbdev.c
> @@ -16,7 +16,7 @@
>  #define _MASTER_FILE
>  #include "global.h"
>  
> -static char *viafb_name = "Via";
> +static const char viafb_name[] = "viafb";

[Severity: Critical]
Does changing this string from "Via" to "viafb" cause a userspace ABI
regression?

Userspace tools and display servers, such as Xorg's via driver, often
rely on the exact identification string returned in the id field of
fb_fix_screeninfo by the framebuffer ioctl to detect hardware and apply
specific quirks.

Could the compile-time bounds checking and optimization benefits still be
achieved without modifying the exposed string value, perhaps by defining
it as 'static const char viafb_name[] = "Via";' instead?

>  static u32 pseudo_pal[17];
>  
>  /* video mode */

[ ... ]

> @@ -144,7 +144,7 @@ static void viafb_setup_fixinfo(struct fb_fix_screeninfo *fix,
>  	struct viafb_par *viaparinfo)
>  {
>  	memset(fix, 0, sizeof(struct fb_fix_screeninfo));
> -	strcpy(fix->id, viafb_name);
> +	strscpy(fix->id, viafb_name, sizeof(fix->id));
>  
>  	fix->smem_start = viaparinfo->fbmem;
>  	fix->smem_len = viaparinfo->fbmem_free;

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.