On Thu, Feb 13, 2025 at 10:24:25AM -0800, Bart Van Assche wrote: > On 2/13/25 3:40 AM, Thorsten Blum wrote: > > diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c > > index c7ebae24b09f..968cefb497eb 100644 > > --- a/drivers/scsi/hpsa.c > > +++ b/drivers/scsi/hpsa.c > > @@ -7236,8 +7236,7 @@ static int hpsa_controller_hard_reset(struct pci_dev *pdev, > > static void init_driver_version(char *driver_version, int len) > > { > > - memset(driver_version, 0, len); > > - strncpy(driver_version, HPSA " " HPSA_DRIVER_VERSION, len - 1); > > + strscpy_pad(driver_version, HPSA " " HPSA_DRIVER_VERSION, len); > > } > > static int write_driver_ver_to_cfgtable(struct CfgTable __iomem *cfgtable) > > Has it been considered to introduce a Coccinelle semantic patch that > performs this conversion? See also the scripts/coccinelle directory. Using this: @pad0 depends on !(file in "tools") && !(file in "samples")@ expression DEST, SRC; expression LENGTH; @@ - memset(DEST, 0, LENGTH); - strncpy(DEST, SRC, LENGTH - 1); + strscpy_pad(DEST, SRC, LENGTH); @padNUL depends on !(file in "tools") && !(file in "samples")@ expression DEST, SRC; expression LENGTH; @@ - memset(DEST, '\0', LENGTH); - strncpy(DEST, SRC, LENGTH - 1); + strscpy_pad(DEST, SRC, LENGTH); It turns out this is the only place left in the kernel using that pattern. :) > > Anyway: > > Reviewed-by: Bart Van Assche <bvanassche@xxxxxxx> Reviewed-by: Kees Cook <kees@xxxxxxxxxx> -- Kees Cook