asd_process_ctrl_a_user() attempts to find user settings in flash, and
if they are missing it prepares a substitute structure containing
default values for PHY settings.  But having done so, it will still
try to read user settings - from some random address in flash, as the
local variable 'offs' has not been initialised.

Since asd_common_setup() already sets default PHY settings, there
seems to be no need to repeat them here, and we can just return 0.

Compile-tested only.

Signed-off-by: Ben Hutchings <b...@decadent.org.uk>
---
 drivers/scsi/aic94xx/aic94xx_sds.c | 18 ++----------------
 1 file changed, 2 insertions(+), 16 deletions(-)

diff --git a/drivers/scsi/aic94xx/aic94xx_sds.c 
b/drivers/scsi/aic94xx/aic94xx_sds.c
index edb43fd..f5d51d2 100644
--- a/drivers/scsi/aic94xx/aic94xx_sds.c
+++ b/drivers/scsi/aic94xx/aic94xx_sds.c
@@ -981,29 +981,15 @@ static int asd_process_ctrla_phy_settings(struct 
asd_ha_struct *asd_ha,
 static int asd_process_ctrl_a_user(struct asd_ha_struct *asd_ha,
                                   struct asd_flash_dir *flash_dir)
 {
-       int err, i;
+       int err;
        u32 offs, size;
        struct asd_ll_el *el;
        struct asd_ctrla_phy_settings *ps;
-       struct asd_ctrla_phy_settings dflt_ps;
 
        err = asd_find_flash_de(flash_dir, FLASH_DE_CTRL_A_USER, &offs, &size);
        if (err) {
                ASD_DPRINTK("couldn't find CTRL-A user settings section\n");
-               ASD_DPRINTK("Creating default CTRL-A user settings section\n");
-
-               dflt_ps.id0 = 'h';
-               dflt_ps.num_phys = 8;
-               for (i =0; i < ASD_MAX_PHYS; i++) {
-                       memcpy(dflt_ps.phy_ent[i].sas_addr,
-                              asd_ha->hw_prof.sas_addr, SAS_ADDR_SIZE);
-                       dflt_ps.phy_ent[i].sas_link_rates = 0x98;
-                       dflt_ps.phy_ent[i].flags = 0x0;
-                       dflt_ps.phy_ent[i].sata_link_rates = 0x0;
-               }
-
-               size = sizeof(struct asd_ctrla_phy_settings);
-               ps = &dflt_ps;
+               return 0;
        }
 
        if (size == 0)

-- 
Ben Hutchings
If at first you don't succeed, you're doing about average.

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to