• Arnd Bergmann's avatar
    scsi: pm8001: Avoid -Wrestrict warning · c2255ece
    Arnd Bergmann authored
    On some configurations, gcc warns about overlapping source and destination
    arguments to snprintf:
    
    drivers/scsi/pm8001/pm8001_init.c: In function 'pm8001_request_msix':
    drivers/scsi/pm8001/pm8001_init.c:977:3: error: 'snprintf' argument 4 may overlap destination object 'pm8001_ha' [-Werror=restrict]
      977 |   snprintf(drvname, len, "%s-%d", pm8001_ha->name, i);
          |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    drivers/scsi/pm8001/pm8001_init.c:962:56: note: destination object referenced by 'restrict'-qualified argument 1 was declared here
      962 | static u32 pm8001_request_msix(struct pm8001_hba_info *pm8001_ha)
          |                                ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~
    
    I first assumed this was a gcc bug, as that should not happen, but a
    reduced test case makes it clear that this happens when the loop counter is
    not bounded by the array size.
    
    Help the compiler out by adding an explicit limit here to make the code
    slightly more robust and avoid the warning.
    
    Link: https://godbolt.org/z/6T1qPM
    Link: https://lore.kernel.org/r/20210323125458.1825564-1-arnd@kernel.orgAcked-by: default avatarJack Wang <jinpu.wang@ionos.com>
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    c2255ece
pm8001_init.c 44.7 KB