osd: fix signed char versus %02x issue
authorRasmus Villemoes <linux@rasmusvillemoes.dk>
Tue, 8 Dec 2015 14:25:16 +0000 (15:25 +0100)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 10 Dec 2015 18:14:56 +0000 (13:14 -0500)
If char is signed and one of these bytes happen to have a value outside
the ascii range, the corresponding output will consist of "ffffff"
followed by the two hex chars that were actually intended. One way to
fix it would be to change the casts to (u8*) aka
(unsigned char*), but it is much simpler (and generates smaller code)
to use the %ph extension which was created for such short hexdumps.

Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Acked-by: Boaz Harrosh <ooo@electrozaur.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/osd/osd_initiator.c

index 0cccd6033feb6b477366fc3343e665d1ed68562e..d8a2b5185f56ec98b7dca33005146ff748a6cc5a 100644 (file)
@@ -170,10 +170,7 @@ static int _osd_get_print_system_info(struct osd_dev *od,
 
        /* FIXME: Where are the time utilities */
        pFirst = get_attrs[a++].val_ptr;
-       OSD_INFO("CLOCK                  [0x%02x%02x%02x%02x%02x%02x]\n",
-               ((char *)pFirst)[0], ((char *)pFirst)[1],
-               ((char *)pFirst)[2], ((char *)pFirst)[3],
-               ((char *)pFirst)[4], ((char *)pFirst)[5]);
+       OSD_INFO("CLOCK                  [0x%6phN]\n", pFirst);
 
        if (a < nelem) { /* IBM-OSD-SIM bug, Might not have it */
                unsigned len = get_attrs[a].len;