qla2xxx: logging functions fixups
Subsystems (2)
cover qla2xxx: logging functions fixups
Joe Perches (2):
qla2xxx: Rewrite logging functions to use %pV
qla2xxx: Add __attribute__((format(printf... and fix fallout
drivers/scsi/qla2xxx/qla_attr.c | 4 +- drivers/scsi/qla2xxx/qla_dbg.c | 212 +++++++++++++++++++-------------------- drivers/scsi/qla2xxx/qla_dbg.h | 18 ++-- drivers/scsi/qla2xxx/qla_init.c | 3 +- drivers/scsi/qla2xxx/qla_iocb.c | 2 +- drivers/scsi/qla2xxx/qla_isr.c | 2 +- drivers/scsi/qla2xxx/qla_nx.c | 12 +- drivers/scsi/qla2xxx/qla_os.c | 12 +- drivers/scsi/qla2xxx/qla_sup.c | 5 +- 9 files changed, 132 insertions(+), 138 deletions(-)
Signature · 1 line
1.7.6.131.g99019
PATCH 1/2 qla2xxx: Rewrite logging functions to use %pV
Use less stack to emit logging messages.
Return early when logging level too low. Use normal kernel coding style for function braces. Add const where appropriate to logging functions. Remove now unused #define QL_DBG_BUF_LEN.
--- drivers/scsi/qla2xxx/qla_dbg.c | 212 +++++++++++++++++++-------------------- drivers/scsi/qla2xxx/qla_dbg.h | 10 +- 2 files changed, 107 insertions(+), 115 deletions(-)
drivers/scsi/qla2xxx/qla_dbg.c +103 -109
@@ -1664,34 +1664,31 @@ qla81xx_fw_dump_failed:* msg: The message to be displayed. */ void -ql_dbg (uint32_t level,scsi_qla_host_t *vha,int32_t id,char *msg, ...) { +ql_dbg (uint32_t level,scsi_qla_host_t *vha,int32_t id,const char *fmt, ...) +{ +va_list va; +struct va_format vaf; -char pbuf[QL_DBG_BUF_LEN ]; -va_list ap; -uint32_t len; -struct pci_dev *pdev =NULL ; +if ((level & ql2xextended_error_logging) != level) +return ; -memset (pbuf,0 ,QL_DBG_BUF_LEN ); +va_start (va, fmt); -va_start (ap, msg); + vaf.fmt = fmt; + vaf.va = &va; -if ((level & ql2xextended_error_logging) == level) { -if (vha !=NULL ) { - pdev = vha->hw->pdev; -/* <module-name> <pci-name> <msg-id>:<host> Message */ -sprintf (pbuf,"%s [%s]-%04x:%ld: " ,QL_MSGHDR , -dev_name (&(pdev->dev)), id + ql_dbg_offset, - vha->host_no); - }else -sprintf (pbuf,"%s [%s]-%04x: : " ,QL_MSGHDR , -"0000:00:00.0" , id + ql_dbg_offset); - - len =strlen (pbuf); -vsprintf (pbuf+len, msg, ap); -pr_warning ("%s" , pbuf); +if (vha !=NULL ) { +const struct pci_dev *pdev = vha->hw->pdev; +/* <module-name> <pci-name> <msg-id>:<host> Message */ +pr_warn ("%s [%s]-%04x:%ld: %pV" , +QL_MSGHDR ,dev_name (&(pdev->dev)), id + ql_dbg_offset, + vha->host_no, &vaf); + }else { +pr_warn ("%s [%s]-%04x: : %pV" , +QL_MSGHDR ,"0000:00:00.0" , id + ql_dbg_offset, &vaf); } -va_end (ap); +va_end (va); }
@@ -1710,31 +1707,27 @@ ql_dbg(uint32_t level, scsi_qla_host_t *vha, int32_t id, char *msg, ...) {* msg: The message to be displayed. */ void -ql_dbg_pci (uint32_t level,struct pci_dev *pdev,int32_t id,char *msg, ...) { - -char pbuf[QL_DBG_BUF_LEN ]; -va_list ap; -uint32_t len; +ql_dbg_pci (uint32_t level,struct pci_dev *pdev,int32_t id, +const char *fmt, ...) +{ +va_list va; +struct va_format vaf;if (pdev ==NULL )return ; +if ((level & ql2xextended_error_logging) != level) +return ; -memset (pbuf,0 ,QL_DBG_BUF_LEN ); - -va_start (ap, msg); - -if ((level & ql2xextended_error_logging) == level) { -/* <module-name> <dev-name>:<msg-id> Message */ -sprintf (pbuf,"%s [%s]-%04x: : " ,QL_MSGHDR , -dev_name (&(pdev->dev)), id + ql_dbg_offset); +va_start (va, fmt); - len =strlen (pbuf); -vsprintf (pbuf+len, msg, ap); -pr_warning ("%s" , pbuf); - } + vaf.fmt = fmt; + vaf.va = &va; -va_end (ap); +/* <module-name> <dev-name>:<msg-id> Message */ +pr_warn ("%s [%s]-%04x: : %pV" , +QL_MSGHDR ,dev_name (&(pdev->dev)), id + ql_dbg_offset, &vaf); +va_end (va); }/*
@@ -1751,47 +1744,47 @@ ql_dbg_pci(uint32_t level, struct pci_dev *pdev, int32_t id, char *msg, ...) {* msg: The message to be displayed. */ void -ql_log (uint32_t level,scsi_qla_host_t *vha,int32_t id,char *msg, ...) { - -char pbuf[QL_DBG_BUF_LEN ]; -va_list ap; -uint32_t len; -struct pci_dev *pdev =NULL ; - -memset (pbuf,0 ,QL_DBG_BUF_LEN ); - -va_start (ap, msg); - -if (level <= ql_errlev) { -if (vha !=NULL ) { - pdev = vha->hw->pdev; -/* <module-name> <msg-id>:<host> Message */ -sprintf (pbuf,"%s [%s]-%04x:%ld: " ,QL_MSGHDR , -dev_name (&(pdev->dev)), id, vha->host_no); - }else -sprintf (pbuf,"%s [%s]-%04x: : " ,QL_MSGHDR , -"0000:00:00.0" , id); +ql_log (uint32_t level,scsi_qla_host_t *vha,int32_t id,const char *fmt, ...) +{ +va_list va; +struct va_format vaf; +char pbuf[128 ]; - len =strlen (pbuf); -vsprintf (pbuf+len, msg, ap); +if (level > ql_errlev) +return ; -switch (level) { -case 0 :/* FATAL LOG */ -pr_crit ("%s" , pbuf); -break ; -case 1 : -pr_err ("%s" , pbuf); -break ; -case 2 : -pr_warn ("%s" , pbuf); -break ; -default : -pr_info ("%s" , pbuf); -break ; - } +if (vha !=NULL ) { +const struct pci_dev *pdev = vha->hw->pdev; +/* <module-name> <msg-id>:<host> Message */ +snprintf (pbuf,sizeof (pbuf),"%s [%s]-%04x:%ld: " , +QL_MSGHDR ,dev_name (&(pdev->dev)), id, vha->host_no); + }else { +snprintf (pbuf,sizeof (pbuf),"%s [%s]-%04x: : " , +QL_MSGHDR ,"0000:00:00.0" , id); + } + pbuf[sizeof (pbuf) -1 ] =0 ; + +va_start (va, fmt); + + vaf.fmt = fmt; + vaf.va = &va; + +switch (level) { +case 0 :/* FATAL LOG */ +pr_crit ("%s%pV" , pbuf, &vaf); +break ; +case 1 : +pr_err ("%s%pV" , pbuf, &vaf); +break ; +case 2 : +pr_warn ("%s%pV" , pbuf, &vaf); +break ; +default : +pr_info ("%s%pV" , pbuf, &vaf); +break ; } -va_end (ap); +va_end (va); }/*
@@ -1809,43 +1802,44 @@ ql_log(uint32_t level, scsi_qla_host_t *vha, int32_t id, char *msg, ...) {* msg: The message to be displayed. */ void -ql_log_pci (uint32_t level,struct pci_dev *pdev,int32_t id,char *msg, ...) { - -char pbuf[QL_DBG_BUF_LEN ]; -va_list ap; -uint32_t len; +ql_log_pci (uint32_t level,struct pci_dev *pdev,int32_t id, +const char *fmt, ...) +{ +va_list va; +struct va_format vaf; +char pbuf[128 ];if (pdev ==NULL )return ; +if (level > ql_errlev) +return ; -memset (pbuf,0 ,QL_DBG_BUF_LEN ); - -va_start (ap, msg); - -if (level <= ql_errlev) { -/* <module-name> <dev-name>:<msg-id> Message */ -sprintf (pbuf,"%s [%s]-%04x: : " ,QL_MSGHDR , -dev_name (&(pdev->dev)), id); - - len =strlen (pbuf); -vsprintf (pbuf+len, msg, ap); -switch (level) { -case 0 :/* FATAL LOG */ -pr_crit ("%s" , pbuf); -break ; -case 1 : -pr_err ("%s" , pbuf); -break ; -case 2 : -pr_warn ("%s" , pbuf); -break ; -default : -pr_info ("%s" , pbuf); -break ; - } +/* <module-name> <dev-name>:<msg-id> Message */ +snprintf (pbuf,sizeof (pbuf),"%s [%s]-%04x: : " , +QL_MSGHDR ,dev_name (&(pdev->dev)), id); + pbuf[sizeof (pbuf) -1 ] =0 ; + +va_start (va, fmt); + + vaf.fmt = fmt; + vaf.va = &va; + +switch (level) { +case 0 :/* FATAL LOG */ +pr_crit ("%s%pV" , pbuf, &vaf); +break ; +case 1 : +pr_err ("%s%pV" , pbuf, &vaf); +break ; +case 2 : +pr_warn ("%s%pV" , pbuf, &vaf); +break ; +default : +pr_info ("%s%pV" , pbuf, &vaf); +break ; } -va_end (ap); +va_end (va); }void
@@ -1888,7 +1882,7 @@ ql_dump_buffer(uint32_t level, scsi_qla_host_t *vha, int32_t id,ql_dbg (level, vha, id,"----------------------------------" "----------------------------\n" ); -ql_dbg (level, vha, id,"" ); +ql_dbg (level, vha, id," " );for (cnt =0 ; cnt < size;) { c = *b++;printk ("%02x" , (uint32_t ) c);
drivers/scsi/qla2xxx/qla_dbg.h +4 -6
@@ -245,14 +245,14 @@ struct qla2xxx_fw_dump {extern int ql_errlev;void -ql_dbg (uint32_t ,scsi_qla_host_t *vha,int32_t ,char *, ...); +ql_dbg (uint32_t ,scsi_qla_host_t *vha,int32_t ,const char *fmt, ...);void -ql_dbg_pci (uint32_t ,struct pci_dev *pdev,int32_t ,char *, ...); +ql_dbg_pci (uint32_t ,struct pci_dev *pdev,int32_t ,const char *fmt, ...);void -ql_log (uint32_t ,scsi_qla_host_t *vha,int32_t ,char *, ...); +ql_log (uint32_t ,scsi_qla_host_t *vha,int32_t ,const char *fmt, ...);void -ql_log_pci (uint32_t ,struct pci_dev *pdev,int32_t ,char *, ...); +ql_log_pci (uint32_t ,struct pci_dev *pdev,int32_t ,const char *fmt, ...);/* Debug Levels */ /* The 0x40000000 is the max value any debug level can have
@@ -275,5 +275,3 @@ ql_log_pci(uint32_t, struct pci_dev *pdev, int32_t, char *, ...);#define ql_dbg_misc 0x00010000/* For dumping everything that is not * not covered by upper categories */ - -#define QL_DBG_BUF_LEN 512
Signature · 1 line
1.7.6.131.g99019
Re: [PATCH 1/2] qla2xxx: Rewrite logging functions to use %pV
drivers/scsi/qla2xxx/qla_dbg.c qla81xx_fw_dump_failed: · line 1689
Quoted 10 lines
drivers/scsi/qla2xxx/qla_dbg.c +9
-0+if (vha !=NULL ) { +const struct pci_dev *pdev = vha->hw->pdev; +/* <module-name> <pci-name> <msg-id>:<host> Message */ +pr_warn ("%s [%s]-%04x:%ld: %pV" , +QL_MSGHDR ,dev_name (&(pdev->dev)), id + ql_dbg_offset, + vha->host_no, &vaf); + }else { +pr_warn ("%s [%s]-%04x: : %pV" , +QL_MSGHDR ,"0000:00:00.0" , id + ql_dbg_offset, &vaf); }
If I would see 0000:00:00.0 in the logmessage I would become scared that something is dereferencing cleared memory, use after free or whatever. Only by looking into the code I could see that this code simply has no idea which device it is on. Well, then don't print an address when you don't have one instead of inventing one.
Eike
Re: [PATCH 1/2] qla2xxx: Rewrite logging functions to use %pV
Quoted 7 lines · Rolf Eike Beer
Quoted 7 lines
drivers/scsi/qla2xxx/qla_dbg.c +7
-0+if (vha !=NULL ) { +const struct pci_dev *pdev = vha->hw->pdev; +/* <module-name> <pci-name> <msg-id>:<host> Message */ +pr_warn ("%s [%s]-%04x:%ld: %pV" , +QL_MSGHDR ,dev_name (&(pdev->dev)), id + ql_dbg_offset, + vha->host_no, &vaf); + }else {
Quoted 8 lines
drivers/scsi/qla2xxx/qla_dbg.c qla81xx_fw_dump_failed: · line 1689
Quoted 3 lines
drivers/scsi/qla2xxx/qla_dbg.c +2
-0+pr_warn ("%s [%s]-%04x: : %pV" , +QL_MSGHDR ,"0000:00:00.0" , id + ql_dbg_offset, &vaf); }If I would see 0000:00:00.0 in the logmessage I would become scared that something is dereferencing cleared memory, use after free or whatever. Only by looking into the code I could see that this code simply has no idea which device it is on. Well, then don't print an address when you don't have one instead of inventing one.
I don't disagree, but that's for Andrew to figure out in a separate patch.
I just want to make the code smaller.
The output of the new code is the same as the old code.
RE: [PATCH 1/2] qla2xxx: Rewrite logging functions to use %pV
In reply to Joe PerchesAcked by: Saurav Kashyap <[email protected]>
Thanks,
~Saurav
Quoted 347 lines
-----Original Message-----
From: [email protected] [mailto:linux-scsi- [email protected]] On Behalf Of Joe Perches
Sent: 30 July 2011 16:05
To: Andrew Vasquez; Linux Driver
Cc: James E.J. Bottomley; [email protected]; linux-kernel
Subject: [PATCH 1/2] qla2xxx: Rewrite logging functions to use %pVUse less stack to emit logging messages.
Return early when logging level too low. Use normal kernel coding style for function braces. Add const where appropriate to logging functions. Remove now unused #define
QL_DBG_BUF_LEN.Signed-off-by Joe Perches <[email protected]>--- drivers/scsi/qla2xxx/qla_dbg.c | 212 +++++++++++++++++++------------- ------- drivers/scsi/qla2xxx/qla_dbg.h | 10 +- 2 files changed, 107 insertions(+), 115 deletions(-)drivers/scsi/qla2xxx/qla_dbg.c +33
-40@@ -1664,34 +1664,31 @@ qla81xx_fw_dump_failed:* msg: The message to be displayed. */ void -ql_dbg (uint32_t level,scsi_qla_host_t *vha,int32_t id,char *msg, ...) { +ql_dbg (uint32_t level,scsi_qla_host_t *vha,int32_t id,const char *fmt, ...) +{ +va_list va; +struct va_format vaf; - char pbuf[QL_DBG_BUF_LEN]; -va_list ap; -uint32_t len; -struct pci_dev *pdev =NULL ; +if ((level & ql2xextended_error_logging) != level) +return ; -memset (pbuf,0 ,QL_DBG_BUF_LEN ); +va_start (va, fmt); -va_start (ap, msg); + vaf.fmt = fmt; + vaf.va = &va; -if ((level & ql2xextended_error_logging) == level) { -if (vha !=NULL ) { - pdev = vha->hw->pdev; -/* <module-name> <pci-name> <msg-id>:<host> Message */ -sprintf (pbuf,"%s [%s]-%04x:%ld: " ,QL_MSGHDR , -dev_name (&(pdev->dev)), id + ql_dbg_offset, - vha->host_no); - }else -sprintf (pbuf,"%s [%s]-%04x: : " ,QL_MSGHDR , -"0000:00:00.0" , id + ql_dbg_offset); - - len =strlen (pbuf); -vsprintf (pbuf+len, msg, ap); -pr_warning ("%s" , pbuf); +if (vha !=NULL ) { +const struct pci_dev *pdev = vha->hw->pdev; +/* <module-name> <pci-name> <msg-id>:<host> Message */ +pr_warn ("%s [%s]-%04x:%ld: %pV" , +QL_MSGHDR ,dev_name (&(pdev->dev)), id + ql_dbg_offset, + vha->host_no, &vaf); + }else { +pr_warn ("%s [%s]-%04x: : %pV" , +QL_MSGHDR ,"0000:00:00.0" , id + ql_dbg_offset, &vaf); } -va_end (ap); +va_end (va); }@@ -1710,31 +1707,27 @@ ql_dbg(uint32_t level, scsi_qla_host_t *vha,int32_t id, char *msg, ...) { * msg: The message to be displayed. */ void -ql_dbg_pci (uint32_t level,struct pci_dev *pdev,int32_t id,char *msg, ...) { - -char pbuf[QL_DBG_BUF_LEN ]; -va_list ap; -uint32_t len; +ql_dbg_pci(uint32_t level, struct pci_dev *pdev, int32_t id, + const char *fmt, ...) +{ + va_list va; +struct va_format vaf;if (pdev ==NULL )return ; +if ((level & ql2xextended_error_logging) != level) +return ; -memset (pbuf,0 ,QL_DBG_BUF_LEN ); - -va_start (ap, msg); - -if ((level & ql2xextended_error_logging) == level) { -/* <module-name> <dev-name>:<msg-id> Message */ -sprintf (pbuf,"%s [%s]-%04x: : " ,QL_MSGHDR , -dev_name (&(pdev->dev)), id + ql_dbg_offset); +va_start (va, fmt); - len =strlen (pbuf); -vsprintf (pbuf+len, msg, ap); -pr_warning ("%s" , pbuf); - } + vaf.fmt = fmt; + vaf.va = &va; -va_end (ap); +/* <module-name> <dev-name>:<msg-id> Message */ +pr_warn ("%s [%s]-%04x: : %pV" , +QL_MSGHDR ,dev_name (&(pdev->dev)), id + ql_dbg_offset, &vaf); +va_end (va);}
/*
drivers/scsi/qla2xxx/qla_dbg.c +37
-37@@ -1751,47 +1744,47 @@ ql_dbg_pci(uint32_t level, struct pci_dev*pdev, int32_t id, char *msg, ...) { * msg: The message to be displayed. */ void -ql_log (uint32_t level,scsi_qla_host_t *vha,int32_t id,char *msg, ...) { - -char pbuf[QL_DBG_BUF_LEN ]; -va_list ap; -uint32_t len; -struct pci_dev *pdev =NULL ; - -memset (pbuf,0 ,QL_DBG_BUF_LEN ); - -va_start (ap, msg); - -if (level <= ql_errlev) { -if (vha !=NULL ) { - pdev = vha->hw->pdev; -/* <module-name> <msg-id>:<host> Message */ -sprintf (pbuf,"%s [%s]-%04x:%ld: " ,QL_MSGHDR , -dev_name (&(pdev->dev)), id, vha->host_no); - }else -sprintf (pbuf,"%s [%s]-%04x: : " ,QL_MSGHDR , -"0000:00:00.0" , id); +ql_log (uint32_t level,scsi_qla_host_t *vha,int32_t id,const char *fmt, ...) +{ +va_list va; +struct va_format vaf; +char pbuf[128 ]; - len =strlen (pbuf); -vsprintf (pbuf+len, msg, ap); +if (level > ql_errlev) +return ; -switch (level) { -case 0 :/* FATAL LOG */ -pr_crit ("%s" , pbuf); -break ; -case 1 : -pr_err ("%s" , pbuf); -break ; -case 2 : -pr_warn ("%s" , pbuf); -break ; -default : -pr_info ("%s" , pbuf); -break ; - } +if (vha !=NULL ) { +const struct pci_dev *pdev = vha->hw->pdev; +/* <module-name> <msg-id>:<host> Message */ +snprintf (pbuf,sizeof (pbuf),"%s [%s]-%04x:%ld: " , +QL_MSGHDR ,dev_name (&(pdev->dev)), id, vha->host_no); + }else { +snprintf (pbuf,sizeof (pbuf),"%s [%s]-%04x: : " , +QL_MSGHDR ,"0000:00:00.0" , id); + } + pbuf[sizeof (pbuf) -1 ] =0 ; + +va_start (va, fmt); + + vaf.fmt = fmt; + vaf.va = &va; + +switch (level) { +case 0 :/* FATAL LOG */ +pr_crit ("%s%pV" , pbuf, &vaf); +break ; +case 1 : +pr_err ("%s%pV" , pbuf, &vaf); +break ; +case 2 : +pr_warn ("%s%pV" , pbuf, &vaf); +break ; +default : +pr_info ("%s%pV" , pbuf, &vaf); +break ; } -va_end (ap); +va_end (va);}
/*
drivers/scsi/qla2xxx/qla_dbg.c +32
-31@@ -1809,43 +1802,44 @@ ql_log(uint32_t level, scsi_qla_host_t *vha,int32_t id, char *msg, ...) { * msg: The message to be displayed. */ void -ql_log_pci (uint32_t level,struct pci_dev *pdev,int32_t id,char *msg, ...) { - -char pbuf[QL_DBG_BUF_LEN ]; -va_list ap; -uint32_t len; +ql_log_pci(uint32_t level, struct pci_dev *pdev, int32_t id, + const char *fmt, ...) +{ + va_list va; +struct va_format vaf; +char pbuf[128 ];if (pdev ==NULL )return ; +if (level > ql_errlev) +return ; -memset (pbuf,0 ,QL_DBG_BUF_LEN ); - -va_start (ap, msg); - -if (level <= ql_errlev) { -/* <module-name> <dev-name>:<msg-id> Message */ -sprintf (pbuf,"%s [%s]-%04x: : " ,QL_MSGHDR , -dev_name (&(pdev->dev)), id); - - len =strlen (pbuf); -vsprintf (pbuf+len, msg, ap); -switch (level) { -case 0 :/* FATAL LOG */ -pr_crit ("%s" , pbuf); -break ; -case 1 : -pr_err ("%s" , pbuf); -break ; -case 2 : -pr_warn ("%s" , pbuf); -break ; -default : -pr_info ("%s" , pbuf); -break ; - } +/* <module-name> <dev-name>:<msg-id> Message */ +snprintf (pbuf,sizeof (pbuf),"%s [%s]-%04x: : " , +QL_MSGHDR ,dev_name (&(pdev->dev)), id); + pbuf[sizeof (pbuf) -1 ] =0 ; + +va_start (va, fmt); + + vaf.fmt = fmt; + vaf.va = &va; + +switch (level) { +case 0 :/* FATAL LOG */ +pr_crit ("%s%pV" , pbuf, &vaf); +break ; +case 1 : +pr_err ("%s%pV" , pbuf, &vaf); +break ; +case 2 : +pr_warn ("%s%pV" , pbuf, &vaf); +break ; +default : +pr_info ("%s%pV" , pbuf, &vaf); +break ; } -va_end (ap); +va_end (va); }void
drivers/scsi/qla2xxx/qla_dbg.c +1
-1@@ -1888,7 +1882,7 @@ ql_dump_buffer(uint32_t level, scsi_qla_host_t *vha, int32_t id,ql_dbg (level, vha, id,"----------------------------------" "----------------------------\n" ); -ql_dbg (level, vha, id,"" ); +ql_dbg (level, vha, id," " );for (cnt =0 ; cnt < size;) { c = *b++;printk("%02x", (uint32_t) c);drivers/scsi/qla2xxx/qla_dbg.h +4
-4@@ -245,14 +245,14 @@ struct qla2xxx_fw_dump {extern int ql_errlev;void -ql_dbg (uint32_t ,scsi_qla_host_t *vha,int32_t ,char *, ...); +ql_dbg (uint32_t ,scsi_qla_host_t *vha,int32_t ,const char *fmt, ...);void -ql_dbg_pci (uint32_t ,struct pci_dev *pdev,int32_t ,char *, ...); +ql_dbg_pci (uint32_t ,struct pci_dev *pdev,int32_t ,const char *fmt, ...);void -ql_log (uint32_t ,scsi_qla_host_t *vha,int32_t ,char *, ...); +ql_log (uint32_t ,scsi_qla_host_t *vha,int32_t ,const char *fmt, ...);void -ql_log_pci (uint32_t ,struct pci_dev *pdev,int32_t ,char *, ...); +ql_log_pci (uint32_t ,struct pci_dev *pdev,int32_t ,const char *fmt, ...);/* Debug Levels */
/* The0x40000000is the max value any debug level can havedrivers/scsi/qla2xxx/qla_dbg.h +0
-0@@ -275,5 +275,3 @@ ql_log_pci(uint32_t, struct pci_dev *pdev, int32_t, char *, ...);#define ql_dbg_misc 0x00010000/* For dumping everything that is not
* not covered by upper categories */drivers/scsi/qla2xxx/qla_dbg.h +0
-3- -#define QL_DBG_BUF_LEN 512 --1.7.6.131.g99019
Quoted 5 lines
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
This message and any attached documents contain information from QLogic Corporation or its wholly-owned subsidiaries that may be confidential. If you are not the intended recipient, you may not read, copy, distribute, or use this information. If you have received this transmission in error, please notify the sender immediately by reply e-mail and then delete this message.
PATCH 2/2 qla2xxx: Add __attribute__((format(printf... and fix fallout
In reply to Joe PerchesMake the local logging functions verify their arguments and fixup the current broken uses as appropriate.
--- drivers/scsi/qla2xxx/qla_attr.c | 4 ++-- drivers/scsi/qla2xxx/qla_dbg.h | 8 ++++---- drivers/scsi/qla2xxx/qla_init.c | 3 ++- drivers/scsi/qla2xxx/qla_iocb.c | 2 +- drivers/scsi/qla2xxx/qla_isr.c | 2 +- drivers/scsi/qla2xxx/qla_nx.c | 12 ++++++------ drivers/scsi/qla2xxx/qla_os.c | 12 ++++++------ drivers/scsi/qla2xxx/qla_sup.c | 5 +++-- 8 files changed, 25 insertions(+), 23 deletions(-)
drivers/scsi/qla2xxx/qla_attr.c +2 -2
@@ -634,7 +634,7 @@ qla2x00_sysfs_write_edc(struct file *filp, struct kobject *kobj, dev, adr, len, opt);if (rval !=QLA_SUCCESS ) {ql_log (ql_log_warn, vha,0x7074 , -"Unable to write EDC (%x) %02x:%04x:%02x:%02x\n" , +"Unable to write EDC (%x) %02x:%04x:%02x:%02x:%02x\n" , rval, dev, adr, opt, len, buf[8 ]);return 0 ; }
@@ -691,7 +691,7 @@ qla2x00_sysfs_write_edc_status(struct file *filp, struct kobject *kobj, dev, adr, len, opt);if (rval !=QLA_SUCCESS ) {ql_log (ql_log_info, vha,0x7075 , -"Unable to write EDC status (%x) %02x:%04x:%02x.\n" , +"Unable to write EDC status (%x) %02x:%04x:%02x:%02x.\n" , rval, dev, adr, opt, len);return 0 ; }
drivers/scsi/qla2xxx/qla_dbg.h +4 -4
@@ -244,14 +244,14 @@ struct qla2xxx_fw_dump {extern int ql_errlev; -void +void __attribute__((format (printf,4 ,5 )))ql_dbg (uint32_t ,scsi_qla_host_t *vha,int32_t ,const char *fmt, ...); -void +void __attribute__((format (printf,4 ,5 )))ql_dbg_pci (uint32_t ,struct pci_dev *pdev,int32_t ,const char *fmt, ...); -void +void __attribute__((format (printf,4 ,5 )))ql_log (uint32_t ,scsi_qla_host_t *vha,int32_t ,const char *fmt, ...); -void +void __attribute__((format (printf,4 ,5 )))ql_log_pci (uint32_t ,struct pci_dev *pdev,int32_t ,const char *fmt, ...);/* Debug Levels */
drivers/scsi/qla2xxx/qla_init.c +2 -1
@@ -4186,7 +4186,8 @@ qla2x00_abort_isp(scsi_qla_host_t *vha)spin_unlock_irqrestore (&ha->vport_slock, flags); }else { -ql_log (ql_log_warn, vha,0x8023 ,"%s **** FAILED ****.\n" ); +ql_log (ql_log_warn, vha,0x8023 ,"%s **** FAILED ****.\n" , + __func__); }return (status);
drivers/scsi/qla2xxx/qla_iocb.c +1 -1
@@ -858,7 +858,7 @@ qla24xx_walk_and_build_sglist(struct qla_hw_data *ha, srb_t *sp, uint32_t *dsd, sle_dma =sg_dma_address (sg);ql_dbg (ql_dbg_io, vha,0x300a ,"sg entry %d - addr=0x%x 0x%x, " "len=%d for cmd=%p.\n" , - cur_dsd, i,LSD (sle_dma),MSD (sle_dma),sg_dma_len (sg), + i,LSD (sle_dma),MSD (sle_dma),sg_dma_len (sg), sp->cmd); *cur_dsd++ =cpu_to_le32 (LSD (sle_dma)); *cur_dsd++ =cpu_to_le32 (MSD (sle_dma));
drivers/scsi/qla2xxx/qla_isr.c +1 -1
@@ -298,7 +298,7 @@ qla81xx_idc_event(scsi_qla_host_t *vha, uint16_t aen, uint16_t descr)return ;ql_dbg (ql_dbg_async, vha,0x5022 , -"Inter-Driver Commucation %s -- ACK timeout=%d.\n" , +"%lu Inter-Driver Communication %s -- ACK timeout=%d.\n" , vha->host_no, event[aen &0xff ], timeout); rval =qla2x00_post_idc_ack_work (vha, mb);
drivers/scsi/qla2xxx/qla_nx.c +6 -6
@@ -362,7 +362,7 @@ qla82xx_pci_set_crbwindow_2M(struct qla_hw_data *ha, ulong *off)ql_dbg (ql_dbg_p3p, vha,0xb000 ,"%s: Written crbwin (0x%x) " "!= Read crbwin (0x%x), off=0x%lx.\n" , - ha->crb_win, win_read, *off); + __func__, ha->crb_win, win_read, *off); } *off = (*off &MASK (16 )) +CRB_INDIRECT_2M + ha->nx_pcibase; }
@@ -402,7 +402,7 @@ qla82xx_pci_set_crbwindow(struct qla_hw_data *ha, u64 off) }/* strange address given */ ql_dbg (ql_dbg_p3p, vha,0xb001 , -"%x: Warning: unm_nic_pci_set_crbwindow " +"%s: Warning: unm_nic_pci_set_crbwindow " "called with an unknown address(%llx).\n" ,QLA2XXX_DRIVER_NAME , off);return off;
@@ -1704,12 +1704,12 @@ qla82xx_iospace_config(struct qla_hw_data *ha)ql_dbg_pci (ql_dbg_multiq, ha->pdev,0xc006 ,"nx_pci_base=%p iobase=%p " "max_req_queues=%d msix_count=%d.\n" , - ha->nx_pcibase, ha->iobase, + (void *)ha->nx_pcibase, ha->iobase, ha->max_req_queues, ha->msix_count);ql_dbg_pci (ql_dbg_init, ha->pdev,0x0010 ,"nx_pci_base=%p iobase=%p " "max_req_queues=%d msix_count=%d.\n" , - ha->nx_pcibase, ha->iobase, + (void *)ha->nx_pcibase, ha->iobase, ha->max_req_queues, ha->msix_count);return 0 ;
@@ -1737,7 +1737,7 @@ qla82xx_pci_config(scsi_qla_host_t *vha) ret =pci_set_mwi (ha->pdev); ha->chip_revision = ha->pdev->revision;ql_dbg (ql_dbg_init, vha,0x0043 , -"Chip revision:%ld.\n" , +"Chip revision:%d.\n" , ha->chip_revision);return 0 ; }
@@ -3939,7 +3939,7 @@ int qla2x00_wait_for_fcoe_ctx_reset(scsi_qla_host_t *vha) } }ql_dbg (ql_dbg_p3p, vha,0xb027 , -"%s status=%d.\n" , status); +"%s: status=%d.\n" , __func__, status);return status; }
drivers/scsi/qla2xxx/qla_os.c +6 -6
@@ -1041,7 +1041,7 @@ __qla2xxx_eh_generic_reset(char *name, enum nexus_wait_type type, eh_reset_failed:ql_log (ql_log_info, vha,0x800f ,"%s RESET FAILED: %s for id %d lun %d cmd=%p.\n" , name, - reset_errors[err], cmd->device->id, cmd->device->lun); + reset_errors[err], cmd->device->id, cmd->device->lun, cmd);return FAILED ; }
@@ -1856,7 +1856,7 @@ qla2x00_set_isp_flags(struct qla_hw_data *ha) ha->flags.port0 =0 ;ql_dbg_pci (ql_dbg_init, ha->pdev,0x000b ,"device_type=0x%x port=%d fw_srisc_address=%p.\n" , - ha->device_type, ha->flags.port0, ha->fw_srisc_address); + ha->device_type, ha->flags.port0, (void *)ha->fw_srisc_address); } static int
@@ -1896,8 +1896,8 @@ qla2x00_iospace_config(struct qla_hw_data *ha) } ha->pio_address = pio;ql_dbg_pci (ql_dbg_init, ha->pdev,0x0014 , -"PIO address=%p.\n" , - ha->pio_address); +"PIO address=%llu.\n" , + (unsigned long long )ha->pio_address); skip_pio:/* Use MMIO operations for all accesses. */
@@ -2263,7 +2263,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)ql_dbg (ql_dbg_init, base_vha,0x0033 ,"max_id=%d this_id=%d " "cmd_per_len=%d unique_id=%d max_cmd_len=%d max_channel=%d " -"max_lun=%d transportt=%p, vendor_id=%d.\n" , host->max_id, +"max_lun=%d transportt=%p, vendor_id=%llu.\n" , host->max_id, host->this_id, host->cmd_per_lun, host->unique_id, host->max_cmd_len, host->max_channel, host->max_lun, host->transportt, sht->vendor_id);
@@ -2864,7 +2864,7 @@ qla2x00_mem_alloc(struct qla_hw_data *ha, uint16_t req_len, uint16_t rsp_len,if (!ha->sns_cmd) goto fail_dma_pool;ql_dbg_pci (ql_dbg_init, ha->pdev,0x0026 , -"sns_cmd.\n" , ha->sns_cmd); +"sns_cmd: %p.\n" , ha->sns_cmd); }else {/* Get consistent memory allocated for MS IOCB */ ha->ms_iocb = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL,
drivers/scsi/qla2xxx/qla_sup.c +3 -2
@@ -904,8 +904,9 @@ no_flash_data: } done:ql_dbg (ql_dbg_init, vha,0x004d , -"FDT[%x]: (0x%x/0x%x) erase=0x%x " -"pr=%x upro=%x wrtd=0x%x blk=0x%x.\n" , loc, mid, fid, +"FDT[%s]: (0x%x/0x%x) erase=0x%x " +"pr=%x wrtd=0x%x blk=0x%x.\n" , + loc, mid, fid, ha->fdt_erase_cmd, ha->fdt_protect_sec_cmd, ha->fdt_wrt_disable, ha->fdt_block_size);
Signature · 1 line
1.7.6.131.g99019
RE: [PATCH 2/2] qla2xxx: Add __attribute__((format(printf... and fix fallout
Acked by: Saurav Kashyap <[email protected]>
Thanks,
~Saurav
Quoted 257 lines
-----Original Message-----
From: [email protected] [mailto:linux-scsi- [email protected]] On Behalf Of Joe Perches
Sent: 30 July 2011 16:05
To: Andrew Vasquez; Linux Driver
Cc: James E.J. Bottomley; [email protected]; linux-kernel
Subject: [PATCH 2/2] qla2xxx: Add __attribute__((format(printf... and fix falloutMake the local logging functions verify their arguments and fixup the current broken uses as appropriate.
Signed-off-by Joe Perches <[email protected]>--- drivers/scsi/qla2xxx/qla_attr.c | 4 ++-- drivers/scsi/qla2xxx/qla_dbg.h | 8 ++++---- drivers/scsi/qla2xxx/qla_init.c | 3 ++- drivers/scsi/qla2xxx/qla_iocb.c | 2 +- drivers/scsi/qla2xxx/qla_isr.c | 2 +- drivers/scsi/qla2xxx/qla_nx.c | 12 ++++++------ drivers/scsi/qla2xxx/qla_os.c | 12 ++++++------ drivers/scsi/qla2xxx/qla_sup.c | 5 +++-- 8 files changed, 25 insertions(+), 23 deletions(-)drivers/scsi/qla2xxx/qla_attr.c +1
-1@@ -634,7 +634,7 @@ qla2x00_sysfs_write_edc(struct file *filp, structkobject *kobj, dev, adr, len, opt);if (rval !=QLA_SUCCESS ) {ql_log (ql_log_warn, vha,0x7074 , -"Unable to write EDC (%x) %02x:%04x:%02x:%02x\n" , +"Unable to write EDC (%x) %02x:%04x:%02x:%02x:%02x\n" , rval, dev, adr, opt, len, buf[8 ]);return 0 ;}drivers/scsi/qla2xxx/qla_attr.c +1
-1@@ -691,7 +691,7 @@ qla2x00_sysfs_write_edc_status(struct file *filp,struct kobject *kobj, dev, adr, len, opt);if (rval !=QLA_SUCCESS ) {ql_log (ql_log_info, vha,0x7075 , -"Unable to write EDC status (%x) %02x:%04x:%02x.\n" , + "Unable to write EDC status (%x) %02x:%04x:%02x:%02x.\n", rval, dev, adr, opt, len);return 0; }drivers/scsi/qla2xxx/qla_dbg.h +4
-4@@ -244,14 +244,14 @@ struct qla2xxx_fw_dump {extern int ql_errlev; -void +void __attribute__((format (printf,4 ,5 )))ql_dbg (uint32_t ,scsi_qla_host_t *vha,int32_t ,const char *fmt, ...); -void +void __attribute__((format (printf,4 ,5 )))ql_dbg_pci (uint32_t ,struct pci_dev *pdev,int32_t ,const char *fmt, ...); -void +void __attribute__((format (printf,4 ,5 )))ql_log (uint32_t ,scsi_qla_host_t *vha,int32_t ,const char *fmt, ...); -void +void __attribute__((format (printf,4 ,5 )))ql_log_pci (uint32_t ,struct pci_dev *pdev,int32_t ,const char *fmt, ...);/* Debug Levels */
drivers/scsi/qla2xxx/qla_init.c +2
-1@@ -4186,7 +4186,8 @@ qla2x00_abort_isp(scsi_qla_host_t *vha)spin_unlock_irqrestore (&ha->vport_slock, flags); }else { -ql_log (ql_log_warn, vha,0x8023 ,"%s **** FAILED ****.\n" ); +ql_log (ql_log_warn, vha,0x8023 ,"%s **** FAILED ****.\n" , + __func__); }return (status);drivers/scsi/qla2xxx/qla_iocb.c +1
-1@@ -858,7 +858,7 @@ qla24xx_walk_and_build_sglist(struct qla_hw_data *ha, srb_t *sp, uint32_t *dsd, sle_dma =sg_dma_address (sg);ql_dbg (ql_dbg_io, vha,0x300a , "sg entry %d - addr=0x%x 0x%x, " "len=%d for cmd=%p.\n", - cur_dsd, i,LSD (sle_dma),MSD (sle_dma),sg_dma_len (sg), + i,LSD (sle_dma),MSD (sle_dma),sg_dma_len (sg), sp->cmd);*cur_dsd++ = cpu_to_le32(LSD(sle_dma)); *cur_dsd++ = cpu_to_le32(MSD(sle_dma));drivers/scsi/qla2xxx/qla_isr.c +1
-1@@ -298,7 +298,7 @@ qla81xx_idc_event(scsi_qla_host_t *vha, uint16_t aen, uint16_t descr)return ;ql_dbg (ql_dbg_async, vha,0x5022 , -"Inter-Driver Commucation %s -- ACK timeout=%d.\n" , +"%lu Inter-Driver Communication %s -- ACK timeout=%d.\n" , vha->host_no, event[aen &0xff ], timeout);rval = qla2x00_post_idc_ack_work(vha, mb);drivers/scsi/qla2xxx/qla_nx.c +1
-1@@ -362,7 +362,7 @@ qla82xx_pci_set_crbwindow_2M(struct qla_hw_data *ha, ulong *off)ql_dbg (ql_dbg_p3p, vha,0xb000 ,"%s: Written crbwin (0x%x) " "!= Read crbwin (0x%x), off=0x%lx.\n" , - ha->crb_win, win_read, *off); + __func__, ha->crb_win, win_read, *off); } *off = (*off &MASK (16 )) +CRB_INDIRECT_2M + ha->nx_pcibase;}
drivers/scsi/qla2xxx/qla_nx.c +1
-1@@ -402,7 +402,7 @@ qla82xx_pci_set_crbwindow(struct qla_hw_data *ha, u64 off) }/* strange address given */ ql_dbg (ql_dbg_p3p, vha,0xb001 , -"%x: Warning: unm_nic_pci_set_crbwindow " +"%s: Warning: unm_nic_pci_set_crbwindow " "called with an unknown address(%llx).\n" ,QLA2XXX_DRIVER_NAME , off);return off;drivers/scsi/qla2xxx/qla_nx.c +4
-4@@ -1704,12 +1704,12 @@ qla82xx_iospace_config(struct qla_hw_data *ha)ql_dbg_pci (ql_dbg_multiq, ha->pdev,0xc006 ,"nx_pci_base=%p iobase=%p " "max_req_queues=%d msix_count=%d.\n" , - ha->nx_pcibase, ha->iobase, + (void *)ha->nx_pcibase, ha->iobase, ha->max_req_queues, ha->msix_count);ql_dbg_pci (ql_dbg_init, ha->pdev,0x0010 ,"nx_pci_base=%p iobase=%p " "max_req_queues=%d msix_count=%d.\n" , - ha->nx_pcibase, ha->iobase, + (void *)ha->nx_pcibase, ha->iobase, ha->max_req_queues, ha->msix_count);return 0 ;@@ -1737,7 +1737,7 @@ qla82xx_pci_config(scsi_qla_host_t *vha) ret =pci_set_mwi (ha->pdev); ha->chip_revision = ha->pdev->revision;ql_dbg (ql_dbg_init, vha,0x0043 , -"Chip revision:%ld.\n" , +"Chip revision:%d.\n" , ha->chip_revision);return 0 ; }@@ -3939,7 +3939,7 @@ int qla2x00_wait_for_fcoe_ctx_reset(scsi_qla_host_t *vha) } }ql_dbg (ql_dbg_p3p, vha,0xb027 , -"%s status=%d.\n" , status); +"%s: status=%d.\n" , __func__, status);return status;}
drivers/scsi/qla2xxx/qla_os.c +2
-2@@ -1041,7 +1041,7 @@ __qla2xxx_eh_generic_reset(char *name, enum nexus_wait_type type, eh_reset_failed: ql_log(ql_log_info, vha, 0x800f,"%s RESET FAILED: %s for id %d lun %d cmd=%p.\n" , name, - reset_errors[err], cmd->device->id, cmd->device->lun); + reset_errors[err], cmd->device->id, cmd->device->lun, cmd);return FAILED ; }@@ -1856,7 +1856,7 @@ qla2x00_set_isp_flags(struct qla_hw_data *ha) ha->flags.port0 =0 ;ql_dbg_pci (ql_dbg_init, ha->pdev,0x000b ,"device_type=0x%x port=%d fw_srisc_address=%p.\n" , - ha->device_type, ha->flags.port0, ha->fw_srisc_address); + ha->device_type, ha->flags.port0, (void *)ha- >fw_srisc_address); }static int
drivers/scsi/qla2xxx/qla_os.c +3
-3@@ -1896,8 +1896,8 @@ qla2x00_iospace_config(struct qla_hw_data *ha) } ha->pio_address = pio;ql_dbg_pci (ql_dbg_init, ha->pdev,0x0014 , -"PIO address=%p.\n" , - ha->pio_address); +"PIO address=%llu.\n" , + (unsigned long long )ha->pio_address); skip_pio:/* Use MMIO operations for all accesses. */ @@ -2263,7 +2263,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id) ql_dbg(ql_dbg_init, base_vha, 0x0033,"max_id=%d this_id=%d " "cmd_per_len=%d unique_id=%d max_cmd_len=%d max_channel=%d " -"max_lun=%d transportt=%p, vendor_id=%d.\n" , host->max_id, +"max_lun=%d transportt=%p, vendor_id=%llu.\n" , host->max_id, host->this_id, host->cmd_per_lun, host->unique_id, host->max_cmd_len, host->max_channel, host->max_lun,host->transportt, sht->vendor_id);drivers/scsi/qla2xxx/qla_os.c +1
-1@@ -2864,7 +2864,7 @@ qla2x00_mem_alloc(struct qla_hw_data *ha, uint16_t req_len, uint16_t rsp_len, if (!ha->sns_cmd) goto fail_dma_pool;ql_dbg_pci (ql_dbg_init, ha->pdev,0x0026 , -"sns_cmd.\n" , ha->sns_cmd); +"sns_cmd: %p.\n" , ha->sns_cmd); }else {/* Get consistent memory allocated for MS IOCB */ ha->ms_iocb = dma_pool_alloc(ha->s_dma_pool, GFP_KERNEL,drivers/scsi/qla2xxx/qla_sup.c +3
-3@@ -904,8 +904,9 @@ no_flash_data: } done:ql_dbg (ql_dbg_init, vha,0x004d , -"FDT[%x]: (0x%x/0x%x) erase=0x%x " -"pr=%x upro=%x wrtd=0x%x blk=0x%x.\n" , loc, mid, fid, +"FDT[%s]: (0x%x/0x%x) erase=0x%x " +"pr=%x wrtd=0x%x blk=0x%x.\n" , + loc, mid, fid, ha->fdt_erase_cmd, ha->fdt_protect_sec_cmd, ha->fdt_wrt_disable, ha->fdt_block_size); --1.7.6.131.g99019
Quoted 5 lines
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
This message and any attached documents contain information from QLogic Corporation or its wholly-owned subsidiaries that may be confidential. If you are not the intended recipient, you may not read, copy, distribute, or use this information. If you have received this transmission in error, please notify the sender immediately by reply e-mail and then delete this message.