Re: [PATCH v2 08/21] ata: libata-core: Fix compilation warning in ata_dev_config_ncq()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


On 9/12/23 02:56, Damien Le Moal wrote:
The 24 bytes length allocated to the ncq_desc string in
ata_dev_config_lba() for ata_dev_config_ncq() to use is too short,
causing the following gcc compilation warnings when compiling with W=1:

drivers/ata/libata-core.c: In function ‘ata_dev_configure’:
drivers/ata/libata-core.c:2378:56: warning: ‘%d’ directive output may be truncated writing between 1 and 2 bytes into a region of size between 1 and 11 [-Wformat-truncation=]
  2378 |                 snprintf(desc, desc_sz, "NCQ (depth %d/%d)%s", hdepth,
       |                                                        ^~
In function ‘ata_dev_config_ncq’,
     inlined from ‘ata_dev_config_lba’ at drivers/ata/libata-core.c:2649:8,
     inlined from ‘ata_dev_configure’ at drivers/ata/libata-core.c:2952:9:
drivers/ata/libata-core.c:2378:41: note: directive argument in the range [1, 32]
  2378 |                 snprintf(desc, desc_sz, "NCQ (depth %d/%d)%s", hdepth,
       |                                         ^~~~~~~~~~~~~~~~~~~~~
drivers/ata/libata-core.c:2378:17: note: ‘snprintf’ output between 16 and 31 bytes into a destination of size 24
  2378 |                 snprintf(desc, desc_sz, "NCQ (depth %d/%d)%s", hdepth,
       |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2379 |                         ddepth, aa_desc);
       |                         ~~~~~~~~~~~~~~~~

Avoid these warnings and the potential truncation by changing the size
of the ncq_desc string to 32 characters.

Signed-off-by: Damien Le Moal <dlemoal@xxxxxxxxxx>
  drivers/ata/libata-core.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 18b2a0da9e54..2405ac8b53f0 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -2619,7 +2619,7 @@ static int ata_dev_config_lba(struct ata_device *dev)
  	const u16 *id = dev->id;
  	const char *lba_desc;
-	char ncq_desc[24];
+	char ncq_desc[32];
  	int ret;
dev->flags |= ATA_DFLAG_LBA;
Reviewed-by: Hannes Reinecke <hare@xxxxxxx>


Dr. Hannes Reinecke                Kernel Storage Architect
hare@xxxxxxx                              +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Ivo Totev, Andrew
Myers, Andrew McDonald, Martje Boudien Moerman

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux