Message ID | 20250310222553.work.437-kees@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | scsi: pm80xx: Add __nonstring annotations for unterminated strings | expand |
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.wang@cloud.ionos.com> > Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com> > Cc: "Martin K. Petersen" <martin.petersen@oracle.com> > Cc: linux-scsi@vger.kernel.org > Signed-off-by: Kees Cook <kees@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
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; int code; };
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.wang@cloud.ionos.com> Cc: "James E.J. Bottomley" <James.Bottomley@HansenPartnership.com> Cc: "Martin K. Petersen" <martin.petersen@oracle.com> Cc: linux-scsi@vger.kernel.org Signed-off-by: Kees Cook <kees@kernel.org> --- drivers/scsi/pm8001/pm8001_ctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)