diff --git a/debian/changelog b/debian/changelog index 860610a11..45b997931 100644 --- a/debian/changelog +++ b/debian/changelog @@ -56,6 +56,7 @@ linux (3.16.2-3) UNRELEASED; urgency=medium * [!x86] staging: Enable R8712U, R8188EU as modules (Closes: #742055, #760859) * i2o: Disable I2O_EXT_ADAPTEC on 64-bit, as it assumes 32-bit virtual addresses + * SCSI: aic94xx: Remove broken fallback for missing 'Ctrl-A' user settings [ Ian Campbell ] * [armel/orion5x] udeb: Include mvmdio in nic-modules udeb. diff --git a/debian/patches/bugfix/all/aic94xx-remove-broken-fallback-for-missing-ctrl-a.patch b/debian/patches/bugfix/all/aic94xx-remove-broken-fallback-for-missing-ctrl-a.patch new file mode 100644 index 000000000..e41a52629 --- /dev/null +++ b/debian/patches/bugfix/all/aic94xx-remove-broken-fallback-for-missing-ctrl-a.patch @@ -0,0 +1,57 @@ +From: Ben Hutchings +Date: Sun, 08 Jun 2014 23:37:44 +0100 +Subject: [SCSI] aic94xx: Remove broken fallback for missing 'Ctrl-A' user settings +Forwarded: http://mid.gmane.org/1402267064.23860.42.camel@deadeye.wl.decadent.org.uk + +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 +--- + 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) diff --git a/debian/patches/series b/debian/patches/series index 0756cdeff..8607f9c58 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -111,3 +111,4 @@ features/x86/x86-make-x32-syscall-support-conditional.patch features/all/virtio-scsi-Implement-change_queue_depth-for-virtscs.patch debian/revert-staging-sm7xxfb-remove-driver.patch debian/i2o-disable-i2o_ext_adaptec-on-64bit.patch +bugfix/all/aic94xx-remove-broken-fallback-for-missing-ctrl-a.patch