On Mon, 2025-03-10 at 15:25 -0700, Kees Cook wrote:
> When a character array without a terminating NUL character has a
> static
> initializer, GCC 15's -Wunterminated-string-initialization will only
> warn if the array lacks the "nonstring" attribute[1]. Mark the arrays
> with __nonstring to and correctly identify the char array as "not a C
> string" and thereby eliminate the warning.
> 
> Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117178 [1]
> Cc: Jack Wang <jinpu.w...@cloud.ionos.com>
> Cc: "James E.J. Bottomley" <james.bottom...@hansenpartnership.com>
> Cc: "Martin K. Petersen" <martin.peter...@oracle.com>
> Cc: linux-s...@vger.kernel.org
> Signed-off-by: Kees Cook <k...@kernel.org>
> ---
>  drivers/scsi/pm8001/pm8001_ctl.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/scsi/pm8001/pm8001_ctl.c
> b/drivers/scsi/pm8001/pm8001_ctl.c
> index 85ff95c6543a..7618f9cc9986 100644
> --- a/drivers/scsi/pm8001/pm8001_ctl.c
> +++ b/drivers/scsi/pm8001/pm8001_ctl.c
> @@ -644,7 +644,7 @@ static DEVICE_ATTR(gsm_log, S_IRUGO,
> pm8001_ctl_gsm_log_show, NULL);
>  #define FLASH_CMD_SET_NVMD    0x02
>  
>  struct flash_command {
> -     u8      command[8];
> +     u8      command[8] __nonstring;

This looks a bit suboptimal ... is there anywhere in the kernel u8[] is
actually used for real strings?  In which case it would seem the better
place to put the annotation is in the typedef for u8 arrays.

Regards,

James


Reply via email to