diff mbox

[net-next] drivers/scsi: Remove warnings after vsprintf %pV introduction

Message ID 1278824921.1501.37.camel@Joe-Laptop.home
State Not Applicable, archived
Delegated to: David Miller
Headers show

Commit Message

Joe Perches July 11, 2010, 5:08 a.m. UTC
On Sat, 2010-07-10 at 19:52 -0700, David Miller wrote:
> Could you take a stab at this and the other scsi bits that
> trigger this warning?

Remove warnings introduced by conversions of dev_<level>
macros to functions.

Compile tested only.

Signed-off-by: Joe Perches <joe@perches.com>
---
 drivers/scsi/constants.c            |   63 ++++++++++++++++++++---------------
 drivers/scsi/sd.c                   |    6 ++--
 drivers/scsi/sym53c8xx_2/sym_hipd.c |   10 ++---
 3 files changed, 43 insertions(+), 36 deletions(-)




--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

David Miller July 11, 2010, 6:10 a.m. UTC | #1
From: Joe Perches <joe@perches.com>
Date: Sat, 10 Jul 2010 22:08:41 -0700

> On Sat, 2010-07-10 at 19:52 -0700, David Miller wrote:
>> Could you take a stab at this and the other scsi bits that
>> trigger this warning?
> 
> Remove warnings introduced by conversions of dev_<level>
> macros to functions.
> 
> Compile tested only.
> 
> Signed-off-by: Joe Perches <joe@perches.com>

SCSI folks, the background is that we have moved the dev_*() printk
macros to external functions, so that the prefixing printf strings
don't get emitting at every call site.

As a consequence, dev_*() calls that try to use an empty string as the
printf format emit a warning from gcc since an empty constant string
is not a valid printf format.

That's what this change is all about.

Anyways:

Acked-by: David S. Miller <davem@davemloft.net>
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
James Bottomley July 12, 2010, 8:27 a.m. UTC | #2
On Sat, 2010-07-10 at 23:10 -0700, David Miller wrote:
> From: Joe Perches <joe@perches.com>
> Date: Sat, 10 Jul 2010 22:08:41 -0700
> 
> > On Sat, 2010-07-10 at 19:52 -0700, David Miller wrote:
> >> Could you take a stab at this and the other scsi bits that
> >> trigger this warning?
> > 
> > Remove warnings introduced by conversions of dev_<level>
> > macros to functions.
> > 
> > Compile tested only.
> > 
> > Signed-off-by: Joe Perches <joe@perches.com>
> 
> SCSI folks, the background is that we have moved the dev_*() printk
> macros to external functions, so that the prefixing printf strings
> don't get emitting at every call site.
> 
> As a consequence, dev_*() calls that try to use an empty string as the
> printf format emit a warning from gcc since an empty constant string
> is not a valid printf format.
> 
> That's what this change is all about.

Thanks, that explains the "" -> " " conversions.

What's the other 60% of the patch about? the strange addition of
scsi_show_extd_sense_args() and all the KERN_CONT bits?

James


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller July 13, 2010, 3:37 a.m. UTC | #3
From: James Bottomley <James.Bottomley@suse.de>
Date: Mon, 12 Jul 2010 04:27:18 -0400

> What's the other 60% of the patch about? the strange addition of
> scsi_show_extd_sense_args() and all the KERN_CONT bits?

Well the new function is for logical seperation, and KERN_CONT
is what is supposed to be at the front of every printk format
that continues a partially-printed line.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
James Bottomley July 27, 2010, 1:12 p.m. UTC | #4
On Sat, 2010-07-10 at 22:08 -0700, Joe Perches wrote:
> On Sat, 2010-07-10 at 19:52 -0700, David Miller wrote:
> > Could you take a stab at this and the other scsi bits that
> > trigger this warning?
> 
> Remove warnings introduced by conversions of dev_<level>
> macros to functions.
> 
> Compile tested only.
> 
> Signed-off-by: Joe Perches <joe@perches.com>
> ---
>  drivers/scsi/constants.c            |   63 ++++++++++++++++++++---------------
>  drivers/scsi/sd.c                   |    6 ++--
>  drivers/scsi/sym53c8xx_2/sym_hipd.c |   10 ++---
>  3 files changed, 43 insertions(+), 36 deletions(-)
> 
> diff --git a/drivers/scsi/constants.c b/drivers/scsi/constants.c
> index cd05e04..f95de51 100644
> --- a/drivers/scsi/constants.c
> +++ b/drivers/scsi/constants.c
> @@ -1226,29 +1226,38 @@ scsi_extd_sense_format(unsigned char asc, unsigned char ascq) {
>  }
>  EXPORT_SYMBOL(scsi_extd_sense_format);
>  
> +static void scsi_show_extd_sense_args(const char *fmt, ...)
> +{
> +	va_list args;
> +	struct va_format vaf;
> +
> +	va_start(args, fmt);
> +
> +	vaf.fmt = fmt;
> +	vaf.va = &args;
> +
> +	printk(KERN_CONT "Add. Sense: %pV\n", &vaf);
> +
> +	va_end(args);
> +}
> +

This doesn't have a place in the patch, it's an unnecessary conversion

>  void
>  scsi_show_extd_sense(unsigned char asc, unsigned char ascq)
>  {
>          const char *extd_sense_fmt = scsi_extd_sense_format(asc, ascq);
>  
>  	if (extd_sense_fmt) {
> -		if (strstr(extd_sense_fmt, "%x")) {
> -			printk("Add. Sense: ");
> -			printk(extd_sense_fmt, ascq);
> -		} else
> -			printk("Add. Sense: %s", extd_sense_fmt);
> +		scsi_show_extd_sense_args(extd_sense_fmt, ascq);
>  	} else {
>  		if (asc >= 0x80)
> -			printk("<<vendor>> ASC=0x%x ASCQ=0x%x", asc,
> -			       ascq);
> +			printk(KERN_CONT "<<vendor>> ASC=0x%x ASCQ=0x%x",
> +			       asc, ascq);
>  		if (ascq >= 0x80)
> -			printk("ASC=0x%x <<vendor>> ASCQ=0x%x", asc,
> -			       ascq);
> +			printk(KERN_CONT "ASC=0x%x <<vendor>> ASCQ=0x%x\n",
> +			       asc, ascq);
>  		else
> -			printk("ASC=0x%x ASCQ=0x%x", asc, ascq);
> +			printk(KERN_CONT "ASC=0x%x ASCQ=0x%x\n", asc, ascq);

And half these KERN_CONT additions are spurious since you'd not
otherwise touch the line

>  	}
> -
> -	printk("\n");
>  }
>  EXPORT_SYMBOL(scsi_show_extd_sense);
>  
> @@ -1310,15 +1319,15 @@ scsi_decode_sense_buffer(const unsigned char *sense_buffer, int sense_len,
>  	if (0 == res) {
>  		/* this may be SCSI-1 sense data */
>  		num = (sense_len < 32) ? sense_len : 32;
> -		printk("Unrecognized sense data (in hex):");
> +		printk(KERN_CONT "Unrecognized sense data (in hex):");
>  		for (k = 0; k < num; ++k) {
>  			if (0 == (k % 16)) {
> -				printk("\n");
> -				printk(KERN_INFO "        ");
> +				printk(KERN_CONT "\n");
> +				printk(KERN_INFO "       ");
>  			}
> -			printk("%02x ", sense_buffer[k]);
> +			printk(KERN_CONT " %02x", sense_buffer[k]);
>  		}
> -		printk("\n");
> +		printk(KERN_CONT "\n");
>  		return;
>  	}
>  }
> @@ -1364,22 +1373,22 @@ scsi_decode_sense_extras(const unsigned char *sense_buffer, int sense_len,
>  			res += snprintf(buff + res, blen - res, "ILI");
>  		}
>  		if (res > 0)
> -			printk("%s\n", buff);
> +			printk(KERN_CONT "%s\n", buff);
>  	} else if (sshdr->additional_length > 0) {
>  		/* descriptor format with sense descriptors */
>  		num = 8 + sshdr->additional_length;
>  		num = (sense_len < num) ? sense_len : num;
> -		printk("Descriptor sense data with sense descriptors "
> +		printk(KERN_CONT "Descriptor sense data with sense descriptors "
>  		       "(in hex):");
>  		for (k = 0; k < num; ++k) {
>  			if (0 == (k % 16)) {
> -				printk("\n");
> -				printk(KERN_INFO "        ");
> +				printk(KERN_CONT "\n");
> +				printk(KERN_INFO "       ");
>  			}
> -			printk("%02x ", sense_buffer[k]);
> +			printk(KERN_CONT " %02x", sense_buffer[k]);
>  		}
>  
> -		printk("\n");
> +		printk(KERN_CONT "\n");
>  	}
>  
>  }
> @@ -1404,13 +1413,13 @@ void scsi_print_sense(char *name, struct scsi_cmnd *cmd)
>  {
>  	struct scsi_sense_hdr sshdr;
>  
> -	scmd_printk(KERN_INFO, cmd, "");
> +	scmd_printk(KERN_INFO, cmd, " ");
>  	scsi_decode_sense_buffer(cmd->sense_buffer, SCSI_SENSE_BUFFERSIZE,
>  				 &sshdr);
>  	scsi_show_sense_hdr(&sshdr);
>  	scsi_decode_sense_extras(cmd->sense_buffer, SCSI_SENSE_BUFFERSIZE,
>  				 &sshdr);
> -	scmd_printk(KERN_INFO, cmd, "");
> +	scmd_printk(KERN_INFO, cmd, " ");
>  	scsi_show_extd_sense(sshdr.asc, sshdr.ascq);
>  }
>  EXPORT_SYMBOL(scsi_print_sense);
> @@ -1443,7 +1452,7 @@ void scsi_show_result(int result)
>  
>  void scsi_show_result(int result)
>  {
> -	printk("Result: hostbyte=0x%02x driverbyte=0x%02x\n",
> +	printk(KERN_CONT "Result: hostbyte=0x%02x driverbyte=0x%02x\n",
>  	       host_byte(result), driver_byte(result));
>  }
>  
> @@ -1453,7 +1462,7 @@ EXPORT_SYMBOL(scsi_show_result);
>  
>  void scsi_print_result(struct scsi_cmnd *cmd)
>  {
> -	scmd_printk(KERN_INFO, cmd, "");
> +	scmd_printk(KERN_INFO, cmd, " ");
>  	scsi_show_result(cmd->result);
>  }
>  EXPORT_SYMBOL(scsi_print_result);
> diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
> index 829cc37..2fddadd 100644
> --- a/drivers/scsi/sd.c
> +++ b/drivers/scsi/sd.c
> @@ -2550,15 +2550,15 @@ module_exit(exit_sd);
>  static void sd_print_sense_hdr(struct scsi_disk *sdkp,
>  			       struct scsi_sense_hdr *sshdr)
>  {
> -	sd_printk(KERN_INFO, sdkp, "");
> +	sd_printk(KERN_INFO, sdkp, " ");
>  	scsi_show_sense_hdr(sshdr);
> -	sd_printk(KERN_INFO, sdkp, "");
> +	sd_printk(KERN_INFO, sdkp, " ");
>  	scsi_show_extd_sense(sshdr->asc, sshdr->ascq);
>  }
>  
>  static void sd_print_result(struct scsi_disk *sdkp, int result)
>  {
> -	sd_printk(KERN_INFO, sdkp, "");
> +	sd_printk(KERN_INFO, sdkp, " ");
>  	scsi_show_result(result);
>  }
>  
> diff --git a/drivers/scsi/sym53c8xx_2/sym_hipd.c b/drivers/scsi/sym53c8xx_2/sym_hipd.c
> index a7bc8b7..d740a5b 100644
> --- a/drivers/scsi/sym53c8xx_2/sym_hipd.c
> +++ b/drivers/scsi/sym53c8xx_2/sym_hipd.c
> @@ -72,10 +72,7 @@ static void sym_printl_hex(u_char *p, int n)
>  
>  static void sym_print_msg(struct sym_ccb *cp, char *label, u_char *msg)
>  {
> -	if (label)
> -		sym_print_addr(cp->cmd, "%s: ", label);
> -	else
> -		sym_print_addr(cp->cmd, "");
> +	sym_print_addr(cp->cmd, "%s: ", label);
>  
>  	spi_print_msg(msg);
>  	printf("\n");
> @@ -4558,7 +4555,8 @@ static void sym_int_sir(struct sym_hcb *np)
>  			switch (np->msgin [2]) {
>  			case M_X_MODIFY_DP:
>  				if (DEBUG_FLAGS & DEBUG_POINTER)
> -					sym_print_msg(cp, NULL, np->msgin);
> +					sym_print_msg(cp, "extended msg ",
> +						      np->msgin);
>  				tmp = (np->msgin[3]<<24) + (np->msgin[4]<<16) + 
>  				      (np->msgin[5]<<8)  + (np->msgin[6]);
>  				sym_modify_dp(np, tp, cp, tmp);
> @@ -4585,7 +4583,7 @@ static void sym_int_sir(struct sym_hcb *np)
>  		 */
>  		case M_IGN_RESIDUE:
>  			if (DEBUG_FLAGS & DEBUG_POINTER)
> -				sym_print_msg(cp, NULL, np->msgin);
> +				sym_print_msg(cp, "half byte ", np->msgin);
>  			if (cp->host_flags & HF_SENSE)
>  				OUTL_DSP(np, SCRIPTA_BA(np, clrack));
>  			else

OK, so please resend on the necessary bits.  That's "" -> " " in the
X_printk() statements.  If you remove the space from a continuation
line, then KERN_CONT is appropriate to keep checkpatch quiet.

James


--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/scsi/constants.c b/drivers/scsi/constants.c
index cd05e04..f95de51 100644
--- a/drivers/scsi/constants.c
+++ b/drivers/scsi/constants.c
@@ -1226,29 +1226,38 @@  scsi_extd_sense_format(unsigned char asc, unsigned char ascq) {
 }
 EXPORT_SYMBOL(scsi_extd_sense_format);
 
+static void scsi_show_extd_sense_args(const char *fmt, ...)
+{
+	va_list args;
+	struct va_format vaf;
+
+	va_start(args, fmt);
+
+	vaf.fmt = fmt;
+	vaf.va = &args;
+
+	printk(KERN_CONT "Add. Sense: %pV\n", &vaf);
+
+	va_end(args);
+}
+
 void
 scsi_show_extd_sense(unsigned char asc, unsigned char ascq)
 {
         const char *extd_sense_fmt = scsi_extd_sense_format(asc, ascq);
 
 	if (extd_sense_fmt) {
-		if (strstr(extd_sense_fmt, "%x")) {
-			printk("Add. Sense: ");
-			printk(extd_sense_fmt, ascq);
-		} else
-			printk("Add. Sense: %s", extd_sense_fmt);
+		scsi_show_extd_sense_args(extd_sense_fmt, ascq);
 	} else {
 		if (asc >= 0x80)
-			printk("<<vendor>> ASC=0x%x ASCQ=0x%x", asc,
-			       ascq);
+			printk(KERN_CONT "<<vendor>> ASC=0x%x ASCQ=0x%x",
+			       asc, ascq);
 		if (ascq >= 0x80)
-			printk("ASC=0x%x <<vendor>> ASCQ=0x%x", asc,
-			       ascq);
+			printk(KERN_CONT "ASC=0x%x <<vendor>> ASCQ=0x%x\n",
+			       asc, ascq);
 		else
-			printk("ASC=0x%x ASCQ=0x%x", asc, ascq);
+			printk(KERN_CONT "ASC=0x%x ASCQ=0x%x\n", asc, ascq);
 	}
-
-	printk("\n");
 }
 EXPORT_SYMBOL(scsi_show_extd_sense);
 
@@ -1310,15 +1319,15 @@  scsi_decode_sense_buffer(const unsigned char *sense_buffer, int sense_len,
 	if (0 == res) {
 		/* this may be SCSI-1 sense data */
 		num = (sense_len < 32) ? sense_len : 32;
-		printk("Unrecognized sense data (in hex):");
+		printk(KERN_CONT "Unrecognized sense data (in hex):");
 		for (k = 0; k < num; ++k) {
 			if (0 == (k % 16)) {
-				printk("\n");
-				printk(KERN_INFO "        ");
+				printk(KERN_CONT "\n");
+				printk(KERN_INFO "       ");
 			}
-			printk("%02x ", sense_buffer[k]);
+			printk(KERN_CONT " %02x", sense_buffer[k]);
 		}
-		printk("\n");
+		printk(KERN_CONT "\n");
 		return;
 	}
 }
@@ -1364,22 +1373,22 @@  scsi_decode_sense_extras(const unsigned char *sense_buffer, int sense_len,
 			res += snprintf(buff + res, blen - res, "ILI");
 		}
 		if (res > 0)
-			printk("%s\n", buff);
+			printk(KERN_CONT "%s\n", buff);
 	} else if (sshdr->additional_length > 0) {
 		/* descriptor format with sense descriptors */
 		num = 8 + sshdr->additional_length;
 		num = (sense_len < num) ? sense_len : num;
-		printk("Descriptor sense data with sense descriptors "
+		printk(KERN_CONT "Descriptor sense data with sense descriptors "
 		       "(in hex):");
 		for (k = 0; k < num; ++k) {
 			if (0 == (k % 16)) {
-				printk("\n");
-				printk(KERN_INFO "        ");
+				printk(KERN_CONT "\n");
+				printk(KERN_INFO "       ");
 			}
-			printk("%02x ", sense_buffer[k]);
+			printk(KERN_CONT " %02x", sense_buffer[k]);
 		}
 
-		printk("\n");
+		printk(KERN_CONT "\n");
 	}
 
 }
@@ -1404,13 +1413,13 @@  void scsi_print_sense(char *name, struct scsi_cmnd *cmd)
 {
 	struct scsi_sense_hdr sshdr;
 
-	scmd_printk(KERN_INFO, cmd, "");
+	scmd_printk(KERN_INFO, cmd, " ");
 	scsi_decode_sense_buffer(cmd->sense_buffer, SCSI_SENSE_BUFFERSIZE,
 				 &sshdr);
 	scsi_show_sense_hdr(&sshdr);
 	scsi_decode_sense_extras(cmd->sense_buffer, SCSI_SENSE_BUFFERSIZE,
 				 &sshdr);
-	scmd_printk(KERN_INFO, cmd, "");
+	scmd_printk(KERN_INFO, cmd, " ");
 	scsi_show_extd_sense(sshdr.asc, sshdr.ascq);
 }
 EXPORT_SYMBOL(scsi_print_sense);
@@ -1443,7 +1452,7 @@  void scsi_show_result(int result)
 
 void scsi_show_result(int result)
 {
-	printk("Result: hostbyte=0x%02x driverbyte=0x%02x\n",
+	printk(KERN_CONT "Result: hostbyte=0x%02x driverbyte=0x%02x\n",
 	       host_byte(result), driver_byte(result));
 }
 
@@ -1453,7 +1462,7 @@  EXPORT_SYMBOL(scsi_show_result);
 
 void scsi_print_result(struct scsi_cmnd *cmd)
 {
-	scmd_printk(KERN_INFO, cmd, "");
+	scmd_printk(KERN_INFO, cmd, " ");
 	scsi_show_result(cmd->result);
 }
 EXPORT_SYMBOL(scsi_print_result);
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index 829cc37..2fddadd 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -2550,15 +2550,15 @@  module_exit(exit_sd);
 static void sd_print_sense_hdr(struct scsi_disk *sdkp,
 			       struct scsi_sense_hdr *sshdr)
 {
-	sd_printk(KERN_INFO, sdkp, "");
+	sd_printk(KERN_INFO, sdkp, " ");
 	scsi_show_sense_hdr(sshdr);
-	sd_printk(KERN_INFO, sdkp, "");
+	sd_printk(KERN_INFO, sdkp, " ");
 	scsi_show_extd_sense(sshdr->asc, sshdr->ascq);
 }
 
 static void sd_print_result(struct scsi_disk *sdkp, int result)
 {
-	sd_printk(KERN_INFO, sdkp, "");
+	sd_printk(KERN_INFO, sdkp, " ");
 	scsi_show_result(result);
 }
 
diff --git a/drivers/scsi/sym53c8xx_2/sym_hipd.c b/drivers/scsi/sym53c8xx_2/sym_hipd.c
index a7bc8b7..d740a5b 100644
--- a/drivers/scsi/sym53c8xx_2/sym_hipd.c
+++ b/drivers/scsi/sym53c8xx_2/sym_hipd.c
@@ -72,10 +72,7 @@  static void sym_printl_hex(u_char *p, int n)
 
 static void sym_print_msg(struct sym_ccb *cp, char *label, u_char *msg)
 {
-	if (label)
-		sym_print_addr(cp->cmd, "%s: ", label);
-	else
-		sym_print_addr(cp->cmd, "");
+	sym_print_addr(cp->cmd, "%s: ", label);
 
 	spi_print_msg(msg);
 	printf("\n");
@@ -4558,7 +4555,8 @@  static void sym_int_sir(struct sym_hcb *np)
 			switch (np->msgin [2]) {
 			case M_X_MODIFY_DP:
 				if (DEBUG_FLAGS & DEBUG_POINTER)
-					sym_print_msg(cp, NULL, np->msgin);
+					sym_print_msg(cp, "extended msg ",
+						      np->msgin);
 				tmp = (np->msgin[3]<<24) + (np->msgin[4]<<16) + 
 				      (np->msgin[5]<<8)  + (np->msgin[6]);
 				sym_modify_dp(np, tp, cp, tmp);
@@ -4585,7 +4583,7 @@  static void sym_int_sir(struct sym_hcb *np)
 		 */
 		case M_IGN_RESIDUE:
 			if (DEBUG_FLAGS & DEBUG_POINTER)
-				sym_print_msg(cp, NULL, np->msgin);
+				sym_print_msg(cp, "half byte ", np->msgin);
 			if (cp->host_flags & HF_SENSE)
 				OUTL_DSP(np, SCRIPTA_BA(np, clrack));
 			else