pm80xx : Fixed return value issue
Subsystems (2)
PATCH v2 2/2 pm80xx : Fixed return value issue
pm80xx_get_gsm_dump() was returning "1" in error case instead of negative error value.
--- drivers/scsi/pm8001/pm8001_ctl.c | 4 ++-- drivers/scsi/pm8001/pm8001_hwi.c | 8 ++++---- drivers/scsi/pm8001/pm80xx_hwi.c | 15 ++++----------- 3 files changed, 10 insertions(+), 17 deletions(-)
drivers/scsi/pm8001/pm8001_ctl.c +2 -2
@@ -452,7 +452,7 @@ static DEVICE_ATTR(iop_log, S_IRUGO, pm8001_ctl_iop_log_show, NULL);static ssize_t pm8001_ctl_fatal_log_show (struct device *cdev,struct device_attribute *attr,char *buf) { -u32 count; +ssize_t count; count =pm80xx_get_fatal_dump (cdev, attr, buf);return count;
@@ -470,7 +470,7 @@ static DEVICE_ATTR(fatal_log, S_IRUGO, pm8001_ctl_fatal_log_show, NULL);static ssize_t pm8001_ctl_gsm_log_show (struct device *cdev,struct device_attribute *attr,char *buf) { -u32 count; +ssize_t count; count =pm8001_get_gsm_dump (cdev,SYSFS_OFFSET , buf);return count;
drivers/scsi/pm8001/pm8001_hwi.c +4 -4
@@ -5020,7 +5020,7 @@ pm8001_get_gsm_dump(struct device *cdev, u32 length, char *buf)/* check max is 1 Mbytes */ if ((length >0x100000 ) || (gsm_dump_offset &3 ) || ((gsm_dump_offset + length) >0x1000000 )) -return 1 ; +return -EINVAL ;if (pm8001_ha->chip_id == chip_8001) bar =2 ;
@@ -5048,12 +5048,12 @@ pm8001_get_gsm_dump(struct device *cdev, u32 length, char *buf) gsm_base =GSM_BASE ;if (-1 ==pm8001_bar4_shift (pm8001_ha, (gsm_base + shift_value))) -return 1 ; +return -EIO ; }else { gsm_base =0 ;if (-1 ==pm80xx_bar4_shift (pm8001_ha, (gsm_base + shift_value))) -return 1 ; +return -EIO ; } gsm_dump_offset = (gsm_dump_offset + offset) &0xFFFF0000 ;
@@ -5073,7 +5073,7 @@ pm8001_get_gsm_dump(struct device *cdev, u32 length, char *buf) }/* Shift back to BAR4 original address */ if (-1 ==pm8001_bar4_shift (pm8001_ha,0 )) -return 1 ; +return -EIO ; pm8001_ha->fatal_forensic_shift_offset +=1024 ;if (pm8001_ha->fatal_forensic_shift_offset >=0x100000 )
drivers/scsi/pm8001/pm80xx_hwi.c +4 -11
@@ -91,7 +91,6 @@ ssize_t pm80xx_get_fatal_dump(struct device *cdev,struct sas_ha_struct *sha =SHOST_TO_SAS_HA (shost);struct pm8001_hba_info *pm8001_ha = sha->lldd_ha;void __iomem *fatal_table_address = pm8001_ha->fatal_tbl_addr; -u32 status =1 ;u32 accum_len , reg_val, index, *temp;unsigned long start;u8 *direct_data;
@@ -111,13 +110,10 @@ ssize_t pm80xx_get_fatal_dump(struct device *cdev, direct_data = (u8 *)fatal_error_data; pm8001_ha->forensic_info.data_type =TYPE_NON_FATAL ; pm8001_ha->forensic_info.data_buf.direct_len =SYSFS_OFFSET ; - pm8001_ha->forensic_info.data_buf.direct_offset =0 ; pm8001_ha->forensic_info.data_buf.read_len =0 ; pm8001_ha->forensic_info.data_buf.direct_data = direct_data; - } - -if (pm8001_ha->forensic_info.data_buf.direct_offset ==0 ) { +/* start to get data */ /* Program the MEMBASE II Shifting Register with 0x00.*/ pm8001_cw32(pm8001_ha, 0, MEMBASE_II_SHIFT_REGISTER,
@@ -126,6 +122,7 @@ ssize_t pm80xx_get_fatal_dump(struct device *cdev, pm8001_ha->forensic_fatal_step =0 ; pm8001_ha->fatal_bar_loc =0 ; } +/* Read until accum_len is retrived */ accum_len =pm8001_mr32 (fatal_table_address,MPI_FATAL_EDUMP_TABLE_ACCUM_LEN );
@@ -135,7 +132,7 @@ ssize_t pm80xx_get_fatal_dump(struct device *cdev,PM8001_IO_DBG (pm8001_ha,pm8001_printk ("Possible PCI issue 0x%x not expected\n" , accum_len)); -return status; +return -EIO ; }if (accum_len ==0 || accum_len >=0x100000 ) { pm8001_ha->forensic_info.data_buf.direct_data +=
@@ -178,7 +175,6 @@ moreData: pm8001_ha->forensic_fatal_step =1 ; pm8001_ha->fatal_forensic_shift_offset =0 ; pm8001_ha->forensic_last_offset =0 ; - status =0 ;return (char *)pm8001_ha-> forensic_info.data_buf.direct_data - (char *)buf;
@@ -194,7 +190,6 @@ moreData: forensic_info.data_buf.direct_data, "%08x ", *(temp + index)); } - status =0 ;return (char *)pm8001_ha-> forensic_info.data_buf.direct_data - (char *)buf;
@@ -214,7 +209,6 @@ moreData:pm8001_cw32 (pm8001_ha,0 ,MEMBASE_II_SHIFT_REGISTER , pm8001_ha->fatal_forensic_shift_offset); pm8001_ha->fatal_bar_loc =0 ; - status =0 ;return (char *)pm8001_ha->forensic_info.data_buf.direct_data - (char *)buf; }
@@ -239,7 +233,7 @@ moreData:PM8001_FAIL_DBG (pm8001_ha,pm8001_printk ("TIMEOUT:MEMBASE_II_SHIFT_REGISTER" " = 0x%x\n" , reg_val)); -return -1 ; +return -EIO ; }/* Read the next 64K of the debug data. */
@@ -259,7 +253,6 @@ moreData: pm8001_ha->forensic_info.data_buf.direct_len =0 ; pm8001_ha->forensic_info.data_buf.direct_offset =0 ; pm8001_ha->forensic_info.data_buf.read_len =0 ; - status =0 ; } }
Signature · 1 line
1.7.1
Quoted 6 lines · Viswas G
pm80xx_get_gsm_dump()was returning "1" in error case instead of negative error value.Signed-off-by Viswas G <[email protected]>Reviewed-by Jack Wang <[email protected]>Acked-by TomasHenzl <[email protected]>
Hi Viswas,
I've ack-ed a different patch before, so I don't think you should add that acked-by line. The V2 patch is fine for me too, so again -
And, when you refer to my name, please add me to the cc-list, otherwise I could miss the mail.
Tomas
Quoted 150 lines
--- drivers/scsi/pm8001/pm8001_ctl.c | 4 ++-- drivers/scsi/pm8001/pm8001_hwi.c | 8 ++++---- drivers/scsi/pm8001/pm80xx_hwi.c | 15 ++++----------- 3 files changed, 10 insertions(+), 17 deletions(-)drivers/scsi/pm8001/pm8001_ctl.c +2
-2@@ -452,7 +452,7 @@ static DEVICE_ATTR(iop_log, S_IRUGO, pm8001_ctl_iop_log_show, NULL);static ssize_t pm8001_ctl_fatal_log_show (struct device *cdev,struct device_attribute *attr,char *buf) { -u32 count; +ssize_t count; count =pm80xx_get_fatal_dump (cdev, attr, buf);return count;@@ -470,7 +470,7 @@ static DEVICE_ATTR(fatal_log, S_IRUGO, pm8001_ctl_fatal_log_show, NULL);static ssize_t pm8001_ctl_gsm_log_show (struct device *cdev,struct device_attribute *attr,char *buf) { -u32 count; +ssize_t count; count =pm8001_get_gsm_dump (cdev,SYSFS_OFFSET , buf);return count;drivers/scsi/pm8001/pm8001_hwi.c +4
-4@@ -5020,7 +5020,7 @@ pm8001_get_gsm_dump(struct device *cdev, u32 length, char *buf)/* check max is 1 Mbytes */ if ((length >0x100000 ) || (gsm_dump_offset &3 ) || ((gsm_dump_offset + length) >0x1000000 )) -return 1 ; +return -EINVAL ;if (pm8001_ha->chip_id == chip_8001) bar =2 ;@@ -5048,12 +5048,12 @@ pm8001_get_gsm_dump(struct device *cdev, u32 length, char *buf) gsm_base =GSM_BASE ;if (-1 ==pm8001_bar4_shift (pm8001_ha, (gsm_base + shift_value))) -return 1 ; +return -EIO ; }else { gsm_base =0 ;if (-1 ==pm80xx_bar4_shift (pm8001_ha, (gsm_base + shift_value))) -return 1 ; +return -EIO ; } gsm_dump_offset = (gsm_dump_offset + offset) &0xFFFF0000 ;@@ -5073,7 +5073,7 @@ pm8001_get_gsm_dump(struct device *cdev, u32 length, char *buf) }/* Shift back to BAR4 original address */ if (-1 ==pm8001_bar4_shift (pm8001_ha,0 )) -return 1 ; +return -EIO ; pm8001_ha->fatal_forensic_shift_offset +=1024 ;if (pm8001_ha->fatal_forensic_shift_offset >=0x100000 )drivers/scsi/pm8001/pm80xx_hwi.c +4
-11@@ -91,7 +91,6 @@ ssize_t pm80xx_get_fatal_dump(struct device *cdev,struct sas_ha_struct *sha =SHOST_TO_SAS_HA (shost);struct pm8001_hba_info *pm8001_ha = sha->lldd_ha;void __iomem *fatal_table_address = pm8001_ha->fatal_tbl_addr; -u32 status =1 ;u32 accum_len , reg_val, index, *temp;unsigned long start;u8 *direct_data;@@ -111,13 +110,10 @@ ssize_t pm80xx_get_fatal_dump(struct device *cdev, direct_data = (u8 *)fatal_error_data; pm8001_ha->forensic_info.data_type =TYPE_NON_FATAL ; pm8001_ha->forensic_info.data_buf.direct_len =SYSFS_OFFSET ; - pm8001_ha->forensic_info.data_buf.direct_offset =0 ; pm8001_ha->forensic_info.data_buf.read_len =0 ; pm8001_ha->forensic_info.data_buf.direct_data = direct_data; - } - -if (pm8001_ha->forensic_info.data_buf.direct_offset ==0 ) { +/* start to get data */ /* Program the MEMBASE II Shifting Register with 0x00.*/ pm8001_cw32(pm8001_ha, 0, MEMBASE_II_SHIFT_REGISTER,@@ -126,6 +122,7 @@ ssize_t pm80xx_get_fatal_dump(struct device *cdev, pm8001_ha->forensic_fatal_step =0 ; pm8001_ha->fatal_bar_loc =0 ; } +/* Read until accum_len is retrived */ accum_len =pm8001_mr32 (fatal_table_address,MPI_FATAL_EDUMP_TABLE_ACCUM_LEN );@@ -135,7 +132,7 @@ ssize_t pm80xx_get_fatal_dump(struct device *cdev,PM8001_IO_DBG (pm8001_ha,pm8001_printk ("Possible PCI issue 0x%x not expected\n" , accum_len)); -return status; +return -EIO ; }if (accum_len ==0 || accum_len >=0x100000 ) { pm8001_ha->forensic_info.data_buf.direct_data +=@@ -178,7 +175,6 @@ moreData: pm8001_ha->forensic_fatal_step =1 ; pm8001_ha->fatal_forensic_shift_offset =0 ; pm8001_ha->forensic_last_offset =0 ; - status =0 ;return (char *)pm8001_ha-> forensic_info.data_buf.direct_data - (char *)buf;@@ -194,7 +190,6 @@ moreData: forensic_info.data_buf.direct_data, "%08x ", *(temp + index)); } - status =0 ;return (char *)pm8001_ha-> forensic_info.data_buf.direct_data - (char *)buf;@@ -214,7 +209,6 @@ moreData:pm8001_cw32 (pm8001_ha,0 ,MEMBASE_II_SHIFT_REGISTER , pm8001_ha->fatal_forensic_shift_offset); pm8001_ha->fatal_bar_loc =0 ; - status =0 ;return (char *)pm8001_ha->forensic_info.data_buf.direct_data - (char *)buf; }@@ -239,7 +233,7 @@ moreData:PM8001_FAIL_DBG (pm8001_ha,pm8001_printk ("TIMEOUT:MEMBASE_II_SHIFT_REGISTER" " = 0x%x\n" , reg_val)); -return -1 ; +return -EIO ; }/* Read the next 64K of the debug data. */ @@ -259,7 +253,6 @@ moreData: pm8001_ha->forensic_info.data_buf.direct_len =0 ; pm8001_ha->forensic_info.data_buf.direct_offset =0 ; pm8001_ha->forensic_info.data_buf.read_len =0 ; - status =0 ; } }
James Bottomley
maintainerQuoted 8 lines · Tomas Henzl
Quoted 6 lines · Viswas G
pm80xx_get_gsm_dump()was returning "1" in error case instead of negative error value.Signed-off-by Viswas G <[email protected]>Reviewed-by Jack Wang <[email protected]>Acked-by TomasHenzl <[email protected]>
Quoted 5 lines
Hi Viswas,
I've ack-ed a different patch before, so I don't think you should add that acked-by line. The V2 patch is fine for me too, so again -
Acked-by Tomas Henzl <[email protected]>
Actually, it can't be acked-by; that's for maintainers agreeing to patches not via them ... I assume it should be reviewed by?
James