Re: [PATCH] vsprintf and docs: Add X to %ph for upper case output

From: Joe Perches
Date: Sun Aug 22 2021 - 04:45:56 EST


On Sun, 2021-08-22 at 11:31 +0300, Andy Shevchenko wrote:
> On Sun, Aug 22, 2021 at 6:00 AM Joe Perches <joe@xxxxxxxxxxx> wrote:
> >
> > Uppercase hex output of small char arrays is moderately frequently used.
> > Add a mechanism to support the %*ph output as uppercase using 'X'.
>
> Besides the fact of existing hex_asc_upper_*(), what ABI (!) uses
> this? If none, I dunno we need this.
> And show at least a few users where we gain something after conversion.
>

There are at least a few uses that could be converted.

For instance:

diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
index 3faa87fa296a2..c56871e8ce1b7 100644
--- a/drivers/scsi/hpsa.c
+++ b/drivers/scsi/hpsa.c
@@ -743,13 +743,7 @@ static ssize_t unique_id_show(struct device *dev,
}
memcpy(sn, hdev->device_id, sizeof(sn));
spin_unlock_irqrestore(&h->lock, flags);
- return snprintf(buf, 16 * 2 + 2,
- "%02X%02X%02X%02X%02X%02X%02X%02X"
- "%02X%02X%02X%02X%02X%02X%02X%02X\n",
- sn[0], sn[1], sn[2], sn[3],
- sn[4], sn[5], sn[6], sn[7],
- sn[8], sn[9], sn[10], sn[11],
- sn[12], sn[13], sn[14], sn[15]);
+ return snprintf(buf, 16 * 2 + 2, "%16phNX\n", sn);
}

static ssize_t sas_address_show(struct device *dev,

and

diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c
index ecb2af3f43ca3..eb39490b196cc 100644
--- a/drivers/scsi/smartpqi/smartpqi_init.c
+++ b/drivers/scsi/smartpqi/smartpqi_init.c
@@ -6674,13 +6674,7 @@ static ssize_t pqi_unique_id_show(struct device *dev,

spin_unlock_irqrestore(&ctrl_info->scsi_device_list_lock, flags);

- return scnprintf(buffer, PAGE_SIZE,
- "%02X%02X%02X%02X%02X%02X%02X%02X"
- "%02X%02X%02X%02X%02X%02X%02X%02X\n",
- unique_id[0], unique_id[1], unique_id[2], unique_id[3],
- unique_id[4], unique_id[5], unique_id[6], unique_id[7],
- unique_id[8], unique_id[9], unique_id[10], unique_id[11],
- unique_id[12], unique_id[13], unique_id[14], unique_id[15]);
+ return scnprintf(buffer, PAGE_SIZE, "%16phNX\n", unique_id);
}